Kotlin 的基本數值類型包括 Byte、Short、Int、Long、Float、Double 等等;這裏要注意,字符不屬於數值類型,是一個獨立的數據類型;
val intNum = 1000 // Int
val intNum1 = 0b11 // Int 二進制類型,值爲 3
val intNum2 = 0xFF // Int 十六進制類型,值爲 255
val longNum = 1000002L // Long
val doubleNum = 135.2 // Double
val floatNum = 111.2f // Float
Kotlin 中對於裝箱的類型數據,比如說 Int 數據,如果超過128的話,比較兩個數的值使用 == ,如果要比較對象地址值的話就是用 === ;同時,對象比較時,我們經常會重寫 equals() 方法,在這裏, == 和 equals() 可以理解爲是相等的。
fun test(){
val x : Int = 150
println(x === x)
val X: Int? = x
val XX: Int? = x
println(X === XX)
println(X == XX)
}
打印結果爲
true
false
true
我們定義對象時,比如定義一個常量 Int 的值,可以有以下方式
fun test1(){
var i = 5
var x : Int = 5
var y: Int? = null
y = 5
var z: Int?
z = 5
println("$i $x $y $z")
}
這四種寫法都行,第一種是用了類型推導;第二種是明確定義了類型;第三種是初始值爲null,延遲賦值;第四種是第三種的簡寫;在這裏要注意,下面有個反例 var j = null ,這樣寫編譯器沒報錯,但是下一步沒法寫了,比如說想給 j 賦值 Int 或 String 類型,由於一開始沒有指定類型就置空,所以編譯器也不知道它是什麼類型,無法推導,然後就沒然後了,切記,這是個反例。
Java 中對於數據類型,可以直接轉換,比如說 byte a = 78;int b = a; 但在 Kotlin 中這種寫法是違規的,轉換時會報錯,怎麼辦?基本數據類型對應的有 toByte() 、toInt()、toLong()、toString() 等方法可以使用,Kotlin 中也支持數據相加時,小類型自動轉換爲大類型
// Java
byte a = 78;
int b = a;
// Kotlin
val a: Byte = 1
val b: Int = a // 錯誤
val c: Int = a.toInt() // 正確
val z = 1000L + 3 // Long + Int 結果z是 Long 類型
Kotlin 中的位操作符與Java的也有點不太一樣,看下面對比
Kotlin Java
shl – << 左移位
shr – >> 右移位
and – & 與
or – | 或
xor – ^ 異或
以上就是常用的操作符,記熟就行。
Java 中的 char 類型數據,直接定義即可 char i = 3; 但在 Kotlin 中不能這樣,需要 var j : Char = '3' ;比如說用 char 減去 int 的數字,在Java中可以直接相減,會得到想要的值;但 Kotlin 中則不行,需要先轉換爲Int類型
// Java:
private void testChar(){
char i = '3';
int j = 1;
System.out.println(i - j); // 值爲 50
}
// Kotlin;
fun test2() {
val i: Char = '3'
val j: Int = 1
println(i - j) // 值爲 2,錯誤
println(i.toInt() - j) // 值爲 50,正確
}
kotlin 中的邏輯判斷符 || 、&& 、 ! 這三個和 java 中都一樣,用法也一樣,這裏就不多說了。
關於數組,有兩種寫法,一種是用 arrayOf() ,另一種是用工廠方式;對於 Int 類型的,還可以使用特定的數組
fun test3() {
val a = arrayOf(1, 2, 3) //[1,2,3]
val b = Array(3) { i -> (i * 2) } //[0,2,4]
val c = intArrayOf(1, 2, 3) //[1,2,3]
}
Kotlin 中的字符串,也有一些特殊的技能,比如說字符串換行,java中的 String s = "abc def ghj"; 字符窗s,如果從空格中換行,中間會用+號鏈接起來;kotlin 中則是支持用 """ 來包裹字符串,換行用 | 來標識,結尾追加 trimMargin() 方法
Java:
String s = "abc def ghj";
String s = "abc " +
" def " +
" ghj";
Kotlin:
val s = """ abc def ghj """
val s = """ abc
|def
|ghj """.trimMargin()
Kotlin 中的比較符也比較個性,比着java多了種用法,可以直接把if語句中返回的值賦給初始化的值
fun test4() {
val a = 1
val b = 2
var x : Int = a
if (a < b) {
x = b
}
var y: Int
if (a > b) {
y = a
} else {
y = b
}
val z = if (a > b) {
a
} else {
b
}
println("$x $y $z ")
}
in 這個關鍵字,在for循環中使用過,同時也可以用在if判斷語句中,比如
fun test5() {
val i = 5
if(i in 1..9){
println("$i is in 1-9")
} else {
println("$i is not in 1-9")
}
}
打印出來的值是 5 is in 1-9 ,說明 i 是在 1-9 的範圍內。同時,還有個 when 的關鍵字,類似於 java 中的 switch 關鍵字,
fun test6() {
val i = 5
when (i) {
1 -> print("i == 1")
2 -> print("i == 2")
in 6..9 -> print("i 在6和9的中間")
else -> {
print("i 不是 1 ,也不是 2")
}
}
}
這裏可以強調一點,如果 i 的類型是位置的,類似java中的 Object,在koltion中叫做 Any,這時候,when 的判斷類型就多了n中變化,比如
fun test7() {
val i: Any = 5
when (i) {
1 -> print("i == 1")
2 -> print("i == 2")
is String -> print("i is String")
in 6..9 -> print("i 在6和9的中間")
else -> {
print("i 不是 1 ,也不是 2")
}
}
}
今天基本東西就是這些了,這些都是需要熟記的。