柚子快報激活碼778899分享:Kotlin 變量
柚子快報激活碼778899分享:Kotlin 變量
文章目錄
變量的聲明基本類型數(shù)字定義比較大小
布爾字符字符串字符串模板數(shù)組定義訪問元素
類型轉(zhuǎn)換類型判斷
變量的聲明
在 Kotlin 中,使用val定義不可變變量,使用var定義可變變量,定義的格式如下:
[val|var] [變量名][: 變量類型] = [變量值]
變量名可以隨意取,但不能以數(shù)字開頭,也不能包含特殊字符,使用關(guān)鍵字時需要加反引號``(英文輸入法,在鍵盤左上角Esc下方的~鍵)。Kotlin 可以使用中文命名變量,但是非常不推薦這樣做,IDEA 也給出了警告。
fun main() {
val 你好Kotlin = "Hello Kotlin."
println(你好Kotlin)
}
Hello Kotlin.
這里定義一個String類型的名為name的可變變量,和一個Int類型的名為id的不可變變量:
fun main() {
// 定義 String 類型的可變變量,并賦值為 "A"
var name: String = "A"
// 將變量的值改為 "B"
name = "B"
// 定義 Int 類型的不可變變量,并賦值為 0
val id: Int = 0
// id = 1 這樣是錯誤的,val修飾的變量一旦賦值就不能更改
}
Kotlin 支持自動類型推斷,因此,在能夠推斷出類型的情況下,可以不用指定類型:
fun main() {
var name = "A"
// 在沒有賦值的情況下,無法推斷類型,所以得指出類型
val id: Int
id = 1
}
Kotlin 變量也可以聲明在main函數(shù)外部:
val id = 0
fun main() {
println(id)
}
0
基本類型
數(shù)字
定義
在數(shù)字類型中,包含有符號(負號)類型Byte、Short、Int、Long、Float、Double(類型間差異主要在于取值范圍,參考。如果給出的值超出范圍,IDEA 將直接標紅),和對應(yīng)的無符號類型UByte、UShort、UInt、ULong。
Float類型必須在數(shù)值末尾加F或f,Long類型則可以選擇性地在末尾加上L或l(由于小寫l與數(shù)字1長得太像,一般用大寫),所有的無符號類型必須加上U或u,ULong可以選擇性地在末尾加上L(不能是小寫)。
fun main() {
val byte: Byte = 1
val short: Short = 1
val int: Int = 1
val long: Long = 1
val float: Float = 1.0f
val double: Double = 1.0
val uByte: UByte = 1u
val uShort: UShort = 1u
val uInt: UInt = 1u
val uLong: ULong = 1u
}
當沒有特別指出類型時,整數(shù)一般會自動推斷為Int,而小數(shù)會是Double,數(shù)字末尾標記F或f會是Float,而U或u會是uInt。
fun main() {
val int = 1
val float = 1.0f
val double = 1.0
val uInt = 1u
}
Kotlin 支持在數(shù)字間加上下劃線_方便閱讀,下劃線可以加在隨意的數(shù)字之間的位置,但一般還是遵循常用的分割方式
fun main() {
val largeInt = 1_000_000_000
// 你可以隨意加
val int = 1_0
}
比較大小
可以使用>、<、==(不能用于不同類型)、>=、<=比較數(shù)字大?。?/p>
fun main() {
println(1 > 0f)
println(1 < 2L)
println(1 == 1)
println(1 >= 0f)
println(1 <= 2L)
}
true
true
true
true
true
布爾
布爾類型Boolean只有兩個值:true或false。
fun main() {
val booleanTrue: Boolean = true
val booleanFalse = false
}
多數(shù)時候,Boolean會和&&(與)、||(或)、!(非)一起使用。
&&可連接兩個Boolean,只有兩者都為true,整體的值才為true。當兩者都為true時,整體為true;當一個為true,一個為false時,整體為false;當兩者都為false時,整體為false。val TRUE = true
val FALSE = false
fun main() {
println(TRUE && TRUE) // true
println(TRUE && FALSE) // false
println(FALSE && FALSE) // false
}
true
false
false
||可連接兩個Boolean,只要有一個值為true,整體的值才為true。當兩者都為true時,整體為true;當一個為true,一個為false時,整體為true;當兩者都為false時,整體為false。val TRUE = true
val FALSE = false
fun main() {
println(TRUE || TRUE) // true
println(TRUE || FALSE) // true
println(FALSE || FALSE) // false
}
true
true
false
!放置于Boolean前,會使整體變?yōu)榱硪粋€值,!true整體為false,!false整體為false。val TRUE = true
val FALSE = false
fun main() {
println(!TRUE) // false
println(!FALSE) // true
}
false
true
字符
字符是指代表一個符號的內(nèi)容(不一定只有一個符號),使用單引號''修飾。
fun main() {
val char: Char = 'a'
}
單個反斜杠\作為轉(zhuǎn)義字符使用,和一些字符結(jié)合會成為單個字符,具體可參考:
反斜杠與t組成制表符:fun main() {
val tab = '\t'
print(tab)
print("Hello")
}
Hello
反斜杠與n組成換行符:fun main() {
val enter = '\n'
print(enter)
print("Hello")
}
Hello
單個反斜杠并不會表示反斜杠,需要用一對\\fun main() {
val char = '\\'
print(char)
}
\
在雙引號""中使用雙引號"字符會導致句意混亂,需要使用\輔助:fun main() {
val string: String = "\""
println(string)
}
"
字符串
字符串由一個或多個字符組成,用雙引號""或者""" """(多行)修飾。 當你輸入"""并回車后,trimIndent()函數(shù)會自動加上,它會去掉首尾("""所在的行)空行和縮進。
fun main() {
var string: String = "Hello Kotlin."
println(string)
string = """
Hello
Kotlin
""".trimIndent()
println(string)
}
Hello Kotlin.
Hello
Kotlin
字符串模板
在 Kotlin 中,可以很自然地使用+將字符串與字符串或其他類型拼接起來:
fun main() {
val hello = "Hello"
val name = "Kotlin"
println(hello + " " + name)
}
Hello Kotlin
我們也可以在字符串中使用美元符$實現(xiàn)拼接:
fun main() {
val hello = "Hello"
val name = "Kotlin"
println("$hello $name")
}
Hello Kotlin
為了將變量名與字符串區(qū)分開,必要時需要加上花括號{}
fun main() {
val dog = "dog"
println("${dog}s")
}
dogs
數(shù)組
定義
你可以使用arrayOf函數(shù)定義一個數(shù)組:
fun main() {
val array = arrayOf(1, 2)
print(array)
}
[Ljava.lang.Integer;@7291c18f
可以看到我們打印出了一個看不懂的東西,單看整體其實可以理解為該數(shù)組的唯一標識。通過查詢可以知道一個[表示這是一個一維數(shù)組,以此類推,L表名后面的java.lang.Interger是一個引用類型,而@后邊的是哈希碼。 如果要打印出數(shù)組中值,可以使用joinToString()函數(shù),它會將數(shù)組元素拼接為字符串:
fun main() {
val array = arrayOf(1, 2)
println(array.joinToString())
}
1, 2
Note:有些函數(shù)需要用.調(diào)用,例如數(shù)組的joinToString()這是定義在數(shù)組類中的函數(shù);而有些可以直接寫函數(shù)名,這是像main一樣的頂層函數(shù)(Top Level Function)。
你可以在數(shù)組中放任意的內(nèi)容:
fun main() {
arrayOf(1, 2, "3")
arrayOf( arrayOf(1, 2) , 3)
}
訪問元素
數(shù)組可以用方括號[]配合下標(Index)訪問指定的元素,數(shù)組中的元素下標從0開始依次遞增,當我們要獲取第一個元素的值時,我們需要使用0。
fun main() {
val array = arrayOf("你", "好")
println(array[0])
}
你
當下標超出數(shù)組元素下標范圍時,會引起異常java.lang.ArrayIndexOutOfBoundsException:
fun main() {
val array = arrayOf("你", "好")
println(array[2])
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
at ink.awning.MainKt.main(Main.kt:6)
at ink.awning.MainKt.main(Main.kt)
類型轉(zhuǎn)換
數(shù)字與String類型之間的轉(zhuǎn)換可以用toXXX()(XXX為要轉(zhuǎn)換的類型)來實現(xiàn),例如String轉(zhuǎn)為Int使用toInt():fun main() {
val string = "11"
val number = string.toInt()
// IDEA 會標紅,鼠標放在上面會提示
// Operator '==' cannot be applied to 'String' and 'Int'
println(string == 11) // 無法比較
// 此時可以正常比較
println(number == 11) // true
// 也可以寫在一行
println(string.toInt() == 11) // true
}
使用as關(guān)鍵字,一般是用于子父類之間或泛型的轉(zhuǎn)化,如果無法轉(zhuǎn)化會拋出異常。fun main() {
// 子父類,MutableList 繼承自 List
val mutableList = mutableListOf(1, 2)
val list = mutableList as List
println(list)
// 同為 List,泛型轉(zhuǎn)換為其他類型
val intList = listOf(1, 2, 3)
val stringList = intList as List
stringList.forEach { print(it); print(", ") }
}
Note:as關(guān)鍵字還可以用于導包時起別名:import ink.awning.ClassName as NewClassName。
類型判斷
可以使用is判斷某一變量是否為某一類型,!is則相反:
fun main() {
val string: Any = ""
println(string is String)
println(string !is Int)
}
Note:Any表示該變量可以為任意類型。
柚子快報激活碼778899分享:Kotlin 變量
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。