-
語言聲明變量與內置數據類型
var:數據可變
val: 數據不可變 -
內置數據類型
String 字符串
Char 單字符
Boolean true/false
Int 整形
Double 小數
List 集合
Set 無重復的元素集合
Map 鍵值對的集合 -
Kotlin語言的類型推斷
val info : String = "Hello KT"
按照KT的語法,需要什么類型。由于KT有類型推斷,所以寫法可以簡化
val info = "Hello KT"
- 編譯時常量 const
const val PI = 3.1415
性能優化:編譯時內聯替換避免運行時開銷
Java互操作:會生成public static final字段
注解參數:編譯時常量才能作為注解參數使用
總結:val保證引用不可變,而const val進一步要求值在編譯期確定,適用于真正的常量場景
-
查看Kotlin反編譯后字節碼
點擊頂部菜單欄 Tools → Kotlin → Show Kotlin Bytecode -
range表達式
number in 10..59
- when表達式
1、基礎用法(替代switch)
when (x) {1 -> println("x是1")2, 3 -> println("x是2或3") // 多條件合并in 4..10 -> println("x在4到10之間") // 范圍判斷else -> println("其他情況")
}
2?、作為表達式返回值?
val result = when {x > 0 -> "正數"x < 0 -> "負數"else -> "零"
}
- String模版
val garden = "黃石公園"val time = 6println("今天天氣很晴朗,去${garden}玩,玩了$time 小時")
- 函數
private fun function(age: Int, name: String) : Int {return 404
}
Java叫方法,Kotlin叫函數。他們的不同點在于方法依賴對象,函數依賴對象,他依賴于File。
Kotlin函數這種寫法,更突出輸入和輸出。而先有輸入后有輸出,從邏輯上來講,更合理。
- 函數參數的默認參數
fun main() {action01("lisi", 89)action02("wangwu")action03()action03("趙六", 76)
}private fun action01(name: String, age: Int) {println("我的姓名是:$name, 我的年齡是:$age")
}private fun action02(name: String, age: Int = 77) {println("我的姓名是:$name, 我的年齡是:$age")
}private fun action03(name: String = "王五", age: Int = 67) {println("我的姓名是:$name, 我的年齡是:$age")
}
- 具名函數參數
fun main() {loginAction(age = 99, userpwd = "123", usernam = "de", username = "Derry", phonenumber = "123456")
}private fun loginAction(username: String, userpwd: String, phonenumber: String, age: Int, usernam: String) {println("username:$username, userpwd:$userpwd, phonenumber:$phonenumber, age:$age")
}
- Unit類型
// Java語言的void關鍵字(void是 無參數返回的 忽略類型)
// 但是他是關鍵幀啊,不是類型,這很矛盾
// Unit不寫,默認也有,Unit代表 無參數返回的 忽略類型 == Unit類型類
private fun doWork() : Unit {return println()
}private fun doWork2() {return println()
}
- Nothing類型
class AImpl : A {override fun show() {// 下面這句話,不是注釋提示,會終止程序的TODO("not implemented")}
}
Kotlin中的TODO()是一個?故意拋出異常的實用函數?,設計目的和典型用法如下:
一、核心設計意圖
?顯式標記未實現代碼?
不同于Java的普通注釋,TODO()會主動拋出NotImplementedError,強制開發者注意未完成的功能點
?防止遺漏開發任務?
在IDE中會高亮顯示TODO(),避免開發者忽略未實現的代碼邏輯
?替代Java的throw new UnsupportedOperationException()?
Kotlin通過標準化語法簡化了臨時占位實現
- 反引號中函數
fun main() {// 第一種情況:`這是一個測試函數 20250610`("Derry", "123456")// 第二種情況:// in is 在kt里面就是關鍵字,怎么辦呢? 使用反引號KtBase21.`is`()KtBase21.`in`()// 第三種情況: 很少發生`65465655475`()
}private fun `這是一個測試函數 20250610`(name: String, pwd: String) {println("模擬:用戶名是$name, 密碼是:$pwd")
}