数组的定义

  • 这里的数组等同于Java中的数组,中括号的类型就是数组的类型]
    val arr1=new ArrayInt
    赋值:集合元素采用小括号访问
    arr1(1) = 7
    反编译后对应的代码:

  • val arr2 = Array(1,3,”xxx”)
    在定义数组的时候直接赋值

ArrayBuffer的声明及操作

  1. 初始化 val arr01=ArrayBufferAny

变长数组分析小结

  1. ArrayBuffer是变长数组,类似Java的arrayList
  2. val arr2 =new ArrayBufferInt也是使用apply方法构建对象
  3. def append(elems: A *){接收的是可变参数} 每append一次,arr在底层会重新分配空间,进行扩容,arr2的内存地址会发生改变,也就成为新的ArrayBuffer

定长数组和变长数组的转换

1
2
3
4
5
6
7
8
//定长数组转可变数组
arr1.toBuffer
//可变数组转定长数组
arr2.toArray

//说明
arr2.toArray返回的结果才是一个定长数组,而arr2本身没有任何改变
arr1.toBuffer返回的结果才是一个可变数组,arr1本身没有变化

多维数组的定义和使用

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
object MultiArray {
def main(args: Array[String]): Unit = {
// 定义多维数组
val multiArray = Array.ofDim[Int](3, 4)
// 循环遍历
for (elem <- multiArray) {
for (elem2 <- elem) {
print(elem2 + "\t")
}
println()
}
// 指定取出
println(multiArray(0)(3))
// 修改值
multiArray(0)(3) = 100
// 重新循环打印
println("=====================================")
for (elem <- multiArray) {
for (elem2 <- elem) {
print(elem2 + "\t")
}
println()
}
}
}