1. 变量声明
-
val
(不可变变量)val name = "Kotlin" // 类型自动推断为String val age: Int = 10 // 显式声明类型 // name = "Java" // 错误:val 不可重新赋值
-
var
(可变变量)var count = 5 count = 10 // 允许修改 var message: String // 未初始化需声明类型 message = "Hello"
2. 数据类型
-
基本类型(全部为对象)
val intVal: Int = 100 val doubleVal: Double = 3.14 val boolVal: Boolean = true val charVal: Char = 'A'
-
字符串
val text = "Kotlin" val multiline = """ Line 1 Line 2 """.trimIndent()
-
字符串模板
val name = "Alice" println("Hello, $name!") // Hello, Alice! println("1 + 2 = ${1 + 2}") // 1 + 2 = 3
-
数组
val numbers = arrayOf(1, 2, 3) val zeros = Array(3) { 0 } // [0, 0, 0]
3. 控制流
-
if
表达式(可返回值)val max = if (a > b) a else b
-
when
表达式(增强版 switch)val grade = when (score) { 90..100 -> "A" in 80..89 -> "B" else -> "C" }
-
循环
for (i in 1..5) print(i) // 1到5(包含) for (i in 1 until 5) print(i) // 1到4(不包含5) for (i in 5 downTo 1) print(i) // 5到1 for (i in 1..10 step 2) // 1,3,5,7,9 while (x > 0) { x-- }
4. 函数
-
基本声明
fun add(a: Int, b: Int): Int { return a + b }
-
表达式函数
fun add(a: Int, b: Int) = a + b
-
默认参数 & 命名参数
fun greet(name: String = "Guest", age: Int) { println("$name is $age years old") } greet(age = 25) // 输出:Guest is 25 years old
5. 空安全设计
-
可空类型(
?
)var nullableStr: String? = null // nullableStr.length // 编译错误:需安全调用
-
安全调用(
?.
)val length = nullableStr?.length // 若为null则返回null
-
Elvis 操作符(
?:
)val len = nullableStr?.length ?: 0 // null时返回0
-
非空断言(
!!
)val forcedLen = nullableStr!!.length // 强制调用(可能抛NPE)
6. 类与对象
-
类定义
class Person(val name: String, var age: Int) { // 主构造器 fun speak() = println("$name is speaking") } val person = Person("Alice", 30)
-
属性
class Rectangle(width: Int, height: Int) { val area = width * height // 只读属性 var color: String = "Red" // 可变属性 }
7. 数据类(自动生成 toString()
、equals()
等)
data class User(val id: Int, val name: String)
val user = User(1, "Tom")
println(user) // 输出:User(id=1, name=Tom)
8. 扩展函数
fun String.addExclamation() = "$this!"
println("Hi".addExclamation()) // 输出:Hi!
9. Lambda 表达式
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3)) // 5
val numbers = listOf(1, 2, 3)
numbers.filter { it > 1 } // [2, 3]
10. 伴生对象(替代静态成员)
class MyClass {
companion object {
fun create() = MyClass()
}
}
val instance = MyClass.create()
关键特性总结
-
简洁性:减少模板代码(如数据类、类型推断)
-
安全性:空安全设计避免 NPE
-
互操作性:100% 兼容 Java
-
函数式支持:Lambda、高阶函数
-
扩展函数:无需继承扩展类功能
通过掌握这些基础语法,您已具备使用 Kotlin 进行开发的核心能力!