上一篇文章介紹了基本變量類型在Kotlin中的用法,不過這只針對單個變量,如果要求把一組相同類型的變量排列起來,形成一個變量數組,那又該如何聲明和操作呢?
在Java中聲明數組,跟在C語言中聲明是一樣的,以整型數組為例,聲明並賦值的語句如下所示:
int[] int_array = new int[] {1, 2, 3};
其它基本類型的數組聲明與之類似,只要把int替換為long、float、double、boolean、char即可。但在Kotlin中,聲明並賦值一個整型數組的語句是下面這樣的:
var int_array:IntArray = intArrayOf(1, 2, 3)
兩相對比,對於整型數組的聲明,Java與Kotlin有以下區別:
1、Kotlin另外提供了新的整型數組類型即IntArray;
2、分配一個常量數組,Kotlin調用的是intArrayOf方法,並不使用new關鍵字;
推而廣之,其它類型的數組也各有自己的數組類型,以及對應分配常量數組的方法,說明如下:
長整型數組:數組類型為LongArray,分配方法為longArrayOf;
浮點數組:數組類型為FloatArray,分配方法為floatArrayOf;
雙精度數組:數組類型為DoubleArray,分配方法為doubleArrayOf;
布爾型數組:數組類型為BooleanArray,分配方法為booleanArrayOf;
字符數組:數組類型為CharArray,分配方法為charArrayOf;
以上幾種基本變量數組的聲明代碼舉例如下:
var long_array:LongArray = longArrayOf(1, 2, 3) var float_array:FloatArray = floatArrayOf(1.0f, 2.0f, 3.0f) var double_array:DoubleArray = doubleArrayOf(1.0, 2.0, 3.0) var boolean_array:BooleanArray = booleanArrayOf(true, false, true) var char_array:CharArray = charArrayOf('a', 'b', 'c')
不知讀者有沒有注意到,上面的數組類型不包括字符串數組,而Java是允許使用字符串數組的,代碼示例如下:
String[] string_array = new String[] {"How", "Are", "You"};
但在Kotlin這里,並不存在名為StringArray的數組類型,因為String不屬於基本變量類型。要想在Kotlin中聲明字符串數組,得使用Array<String>,也就是把String用尖括號包起來;同時,分配字符串數組的方法也相應變成了arrayOf,具體代碼如下所示:
var string_array:Array<String> = arrayOf("How", "Are", "You")
這種字符串數組的聲明方式是不是很熟悉?看起來就跟Java里面的ArrayList用法差不多,都是在尖括號中間塞進數據結構的類型。同理,其它變量類型也能通過Array<***>方式來聲明,像前面介紹的整型數組,其實可以使用類型Array<Int>,以此類推改造之后的數組聲明代碼如下:
var int_array:Array<Int> = arrayOf(1, 2, 3) var long_array:Array<Long> = arrayOf(1, 2, 3) var float_array:Array<Float> = arrayOf(1.0f, 2.0f, 3.0f) var double_array:Array<Double> = arrayOf(1.0, 2.0, 3.0) var boolean_array:Array<Boolean> = arrayOf(true, false, true) var char_array:Array<Char> = arrayOf('a', 'b', 'c')
現在聲明數組和對數組賦值都有了,還需要對數組做進一步的處理,常見的處理包括獲取數組長度、獲取指定位置的數組元素等等,這些功能在Java與Kotlin之間的區別包括:
關於獲取數組長度,Java使用.length,而Kotlin使用.size。
關於獲取指定位置的數組元素,Java通過方括號加下標來獲取,比如“int_array[0]”指的是得到該數組的第一個元素;Kotlin也能通過方括號加下標來獲取指定元素,不過Kotlin還擁有get和set兩個方法,通過get方法獲取元素值,通過set方法修改元素值,看起來就像在操作ArrayList隊列。
下面是字符串數組的具體操作代碼:
btn_string.setOnClickListener { var str:String = "" var i:Int = 0 while (i<string_array.size) { str = str + string_array[i] + ", " //數組元素可以通過下標訪問,也可通過get方法訪問 //str = str + string_array.get(i) + ", " i++ } tv_item_list.text = str }
最后上個Kotlin操作各類型數組的效果動圖,目的是把數組中的元素拼接成字符串並顯示出來:
__________________________________________________________________________
本文現已同步發布到微信公眾號“老歐說安卓”,打開微信掃一掃下面的二維碼,或者直接搜索公眾號“老歐說安卓”添加關注,更快更方便地閱讀技術干貨。