数组:初始化时候指定容器的大小,不可以动态的调整大小。元素安顺序存储在一连串的内存段上
kotlin 数组的创建声明对象数组的三种形式:
(1)使用arrayOf函数和指定的数组元素创建数组,必须指定数组的元素,可以为任意类型
//Java写法:
String[] params1 = {"str1", "str2", "str3"};
//kotlin写法:`
val params1 = arrayOf("str1", "str2", "str3")
(2).使用arrayOfNulls函数创建一个指定大小的并初始化每个元素为null的数组,但是必须指定元素的类型
//Java写法: String[] params2 = new String[12]; //kotlin写法: val params2 = arrayOfNulls(12)
(3)Array构造方法指定数组大小和一个生成元素的lambda表达式
这种方法创建的数组,其中的每个元素都是非空的
//kotlin写法: val params3 = Array基本数据类型数组(3){i -> "str" + i } // 也可以这么写 val params=Array(3){"str$it"}
-
[] 运算符代表调用成员函数 get() 和 set()。数组是不可变的
-
除了类Array,还有ByteArray, ShortArray, IntArray,用来表示各个类型的数组,省去了装箱操作,因此效率更高,其用法同Array一样:
val x: IntArray = intArrayOf(1, 2, 3) x[0] = x[1] + x[2] println(x[0]) //输出5 val inArray = IntArray(5) inArray[0]= 2 // 创建一个长度为5,值全部为100的整型数组intArray[100,100,100,100,100] val intArray2 = IntArray(5){100} //这里it是它的索引值,所以创建一个长度为5的intArray[0,2.4,8,16],it是lamble是专有表达式,这里代表数组的下标 val intArray3 = IntArray(5){it*2 } //{i -> i*2}
java遍历数组
for (int forEach : a) {
System.out.println("forEach=" + forEach);
}
for (int i = 0 ; i< a.length;i++){
System.out.println("for遍历:"+a[i]);
}
kotlin遍历数组
方法一:for-in
val numbers2 = Array(10, { value: Int -> (value + 200) })
// 数组for循环遍历 for-in
for (value in numbers2) {
println(value) //输出200 201 202 203 204 205 206 207 208 209
}
// for-in的加强版: 根据下标在取出数组中的元素
for (i:Int in numbers2.indices){
println(i.toString()+"->"+numbers2[i])//输出结果0->200 1->201 2->202 3->203 4->204 5->205 6->206 7->207 8->208 9->209
}
方法2:forEach
numbers2.forEach {
println("forEach:$it")
}
// forEach加强版,同时遍历下标和元素
numbers2.forEachIndexed{index, i ->
println("$index:$i")
}
数组的替换值
数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,所以我们可以通过下标很方便的获取或者设置数组对应位置的值
字符数组转换成字符串fun main() {
// 第一种形式建立数组arrayOf
val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8)
println(numbers[0]) //输出1
println(numbers[7]) //输出8
// 数组遍历
for (number in numbers) {
println(number) // 输出1 2 3 4 5 6 7 8
}
// 第二种形式 Array value=0 长度为10,然后根据value+200循环赋值
val numbers2 = Array(10, {value: Int -> (value + 200) })
for (value in numbers2) {
println(value) //输出200 201 202 203 204 205 206 207 208 209
}
}



