1 Array数组
数组分为不可变长数组(Array) 和可变长数组(ArrayBuffer) 。 如字面意思,前者长度不可变, 已经写死了, 后者长度可变。注:只是长度不可变, 但是对应角标元素可变 。
/**
* 在Scala中,数组分为不可变长数组(在immutable包下)和可变长数组 (在mutable下)
* 不可变长数组:长度不可变,角标元素值可变
* 可变长数组:长度可变,角标元素值可变
*/
不可变长数组(Array)
在Scala中, Array代表的含义与Java中类似, 也是长度不可改变的数组。 此外,由于Scala与Java都是运行在JVM中, 双方可以互相调用, 因此Scala数组的底层实际上是Java数组。 例如字符串数组在底层就是Java的String[], 整数数组在底层就是Java的Int[] 。
/**
* 不可变长数组
*/
//[Int]相当于java中的泛型<Int>,起到元素类型保护的作用
val arr1 = Array[Int](1, 2, 3, 4)
//如果一个数组中,有多个不同值类型的元素,那么这个数组的类型是这些元素类型的公共父类型Any
val arr2: Array[Any] = Array("true", false, 100, 'a')
//定义了一个数组,长度为5,初始值与泛型的初始值一致,也就是0
val arr3 = new Array[Int](5)
// println(arr3.toBuffer)//ArrayBuffer(0, 0, 0, 0, 0)
//定义了一个数组,长度为1,值为5
val arr4 = Array(5)
// println(arr4.toBuffer)//ArrayBuffer(5)
arr1(0) = 100
// println(arr1.toBuffer)
//++ 运算符:将两个数组合并成一个新的数组,原数组不改变
val arr5 = arr1 ++ arr2
// println(arr5.toBuffer)
可变长数组(ArrayBuffer)
在Scala中, 如果需要类似于Java中的ArrayList这种长度可变的集合类, 则可以使用ArrayBuffer。
如果不想每次都使用全限定名, 则可以预先导入ArrayBuffer<