Kotlin编程入门指南
Kotlin是一种现代、简洁且安全的编程语言,由JetBrains开发,现已成为Android官方推荐开发语言。以下是Kotlin的全面入门指南。
一、Kotlin基础
1. 变量声明
// 不可变变量(推荐)
val name: String = "Kotlin" // 显式类型声明
val version = 1.4 // 类型推断
// 可变变量
var count = 0
count = 10
2. 基本数据类型
// 数字类型
val intNum: Int = 10
val doubleNum: Double = 3.14
// 布尔类型
val isTrue: Boolean = true
// 字符和字符串
val char: Char = 'K'
val str: String = "Kotlin"
val multiLine = """
Hello
Kotlin
"""
3. 控制流
// if表达式(可作为返回值)
val max = if (a > b) a else b
// when表达式(增强版switch)
when (x) {
1 -> print("x == 1")
2, 3 -> print("x == 2 or 3")
in 4..10 -> print("4到10之间")
else -> print("其他")
}
// 循环
for (i in 1..5) { print(i) } // 1到5
for (i in 1 until 5) { print(i) } // 1到4
for (i in 5 downTo 1) { print(i) } // 5到1
for (i in 1..5 step 2) { print(i) } // 1,3,5
二、函数编程
1. 基本函数
// 带默认参数的函数
fun greet(name: String = "World"): String {
return "Hello, $name!"
}
// 单表达式函数
fun square(x: Int) = x * x
// 调用函数
greet() // 使用默认参数
greet("Kotlin") // 传递参数
2. 高阶函数
// 函数作为参数
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
// Lambda表达式
val sum = calculate(5, 3) { x, y -> x + y }
val mul = calculate(5, 3) { x, y -> x * y }
// 常用高阶函数
listOf(1, 2, 3).map { it * 2 } // [2, 4, 6]
listOf(1, 2, 3).filter { it > 1 } // [2, 3]
listOf(1, 2, 3).reduce { acc, i -> acc + i } // 6
三、面向对象编程
1. 类和对象
// 主构造函数
class Person(val name: String, var age: Int) {
// 次构造函数
constructor(name: String) : this(name, 0)
// 属性
var nickname: String = ""
set(value) {
field = value.lowercase()
}
// 方法
fun introduce() {
println("I'm $name, $age years old")
}
}
// 使用类
val person = Person("Alice", 25)
person.age = 26
person.introduce()
2. 数据类
// 自动生成toString(), equals(), hashCode(), copy()等
data class User(val id: Int, val name: String)
// 使用数据类
val user1 = User(1, "Alice")
val user2 = user1.copy(name = "Bob")
val (id, name) = user1 // 解构声明
3. 单例对象
object Singleton {
fun doSomething() {
println("Doing something")
}
}
// 使用单例
Singleton.doSomething()
四、空安全特性
1. 可空类型
var nullableStr: String? = null // 可空变量
var nonNullStr: String = "text" // 非空变量
// 安全调用
val length = nullableStr?.length // 返回Int?
// Elvis操作符
val len = nullableStr?.length ?: 0 // 如果为null则返回0
// 非空断言(谨慎使用)
val forcedLen = nullableStr!!.length // 可能抛出NPE
2. 安全转换
val obj: Any = "String"
val str: String? = obj as? String // 安全转换,失败返回null
五、集合操作
1. 集合创建
// 不可变集合
val list = listOf("a", "b", "c")
val set = setOf(1, 2, 3)
val map = mapOf(1 to "one", 2 to "two")
// 可变集合
val mutableList = mutableListOf(1, 2, 3)
mutableList.add(4)
2. 集合操作
val numbers = listOf(1, 2, 3, 4, 5)
// 过滤
val evens = numbers.filter { it % 2 == 0 } // [2, 4]
// 映射
val squares = numbers.map { it * it } // [1, 4, 9, 16, 25]
// 排序
val sorted = numbers.sortedDescending() // [5, 4, 3, 2, 1]
// 分组
val grouped = numbers.groupBy { if (it % 2 == 0) "even" else "odd" }
// {"odd"=[1,3,5], "even"=[2,4]}
六、扩展函数
// 为String类添加扩展函数
fun String.addExclamation() = "$this!"
// 使用扩展函数
println("Hello".addExclamation()) // 输出: Hello!
// 扩展属性
val String.lastChar: Char
get() = this[length - 1]
println("Kotlin".lastChar) // 输出: n
七、协程基础
import kotlinx.coroutines.*
// 启动协程
fun main() = runBlocking {
// 启动新协程
val job = launch {
delay(1000L) // 非阻塞延迟
println("World!")
}
println("Hello,")
job.join() // 等待协程完成
}
// 异步返回结果
suspend fun fetchData(): String {
delay(1000)
return "Data"
}
fun main() = runBlocking {
val result = async { fetchData() }
println(result.await()) // 输出: Data
}
八、与Java互操作
1. 调用Java代码
// Java类
public class JavaClass {
public static String getMessage() {
return "From Java";
}
}
// Kotlin中调用
val message = JavaClass.getMessage()
2. Java调用Kotlin
// Kotlin文件
@file:JvmName("KotlinUtils")
fun getGreeting() = "Hello from Kotlin"
// Java中调用
String greeting = KotlinUtils.getGreeting();
九、学习资源
-
官方文档:
-
在线练习:
-
推荐书籍:
- 《Kotlin实战》
- 《Kotlin编程权威指南》
-
开发工具:
- IntelliJ IDEA (内置Kotlin支持)
- Android Studio (Kotlin Android开发)
Kotlin结合了面向对象和函数式编程的特性,具有简洁、安全和互操作性强的特点,是现代应用开发的优秀选择。