(一)數(shù)據(jù)類型
數(shù)值類型
Double 64位
Float 32位
Long 64位
Int 32位
Short 16位
Byte 8位
首字母都是大寫。跟Java不同的是,字符不是數(shù)值類型,它是一個(gè)獨(dú)立的數(shù)據(jù)類型
字符類型
字符類型用Char來(lái)表示,Char必需是單引號(hào) ' 包含起來(lái)的。比如'a','b'。注意Kotlin 中的 Char 不能直接和數(shù)字操作。比如:
fun test(c: Char) {
// 錯(cuò)誤:類型不兼容
if (c == 1) {
// 省略
}
}
字符串類型
字符串類型用String來(lái)表示。跟Java一樣,字符串類型是不可變的。可以使用方括號(hào)[]來(lái)獲取字符串中的某一個(gè)字符,[]傳入的是字符的索引。比如:
var str = "zhangzhigang"
println(str[0]) // 輸出函數(shù),輸出的內(nèi)容是z
Java中用String的traim()函數(shù)來(lái)消除字符串兩邊的空格,而Kotlin用則用trimMargin()函數(shù)來(lái)表示。
布爾類型
布爾類型用Boolean類型表示,有true和false兩種值。
數(shù)組
Kotlin中,數(shù)組使用類Array實(shí)現(xiàn),帶有一個(gè)size屬性和get()和set()函數(shù)。創(chuàng)建數(shù)組的方式有兩種:
- 一種是使用函數(shù)arrayOf(),傳入元素的值,中間用逗號(hào)","分隔開。
比如:var a = arrayOf(1,2,3) - 另外一種是使用工廠函數(shù)。
比如: val b = Array(3, { i -> (i * 2) })
數(shù)組的元素獲取,采用數(shù)組名[角標(biāo)],比如a[0] --->>> 1
除了類Array,還有ByteArray, ShortArray, IntArray,用來(lái)表示各個(gè)類型的數(shù)組 。
(二)定義常量、變量
定義常量 只能賦值一遍,相當(dāng)于Java中被final修飾的變量
語(yǔ)法: val <標(biāo)識(shí)符> : <類型> = <初始化值>
定義變量
語(yǔ)法: val <標(biāo)識(shí)符> : <類型> = <初始化值>
注意:Kotlin的編譯器中有變量類型推斷的機(jī)制,比如說(shuō) var a = "zhangzhigang",我們?cè)诙x變量的時(shí)候,并沒(méi)有嚴(yán)格按照Kotlin的規(guī)則,在這里,Kotlin會(huì)智能的推斷出 a是字符串類型的變量。
(三)定義函數(shù)
定義函數(shù)使用了fun關(guān)鍵字,函數(shù)的參數(shù)的格式為: 參數(shù):參數(shù)類型。這里跟Java有所不同:
Java:
public void get(int a,int b) {
// 省略
}
Kotlin:
fun sum(a: Int, b: Int): Int { // Int 參數(shù),返回值 Int
return a + b
}
sum是函數(shù)名,傳入兩個(gè)參數(shù),都是Int型。
無(wú)返回值的函數(shù)
fun sum(a: Int, b: Int): Int { // Int 參數(shù),返回值 Int
return a + b
}
這里明確的規(guī)定了返回類型是Int,那無(wú)返回值的函數(shù)(類似Java中的void)該怎么寫呢?
fun printSum(a: Int, b: Int): Unit {
print(a + b)
}
注意這里用到了Unit 關(guān)鍵字。同時(shí),我們還需要注意兩點(diǎn):1.如果是返回 Unit類型,則可以省略。 2.如果函數(shù)名被public關(guān)鍵字修飾,則函數(shù)一定要有返回值,這里比較一下Java中public的含義。