Kotlin 基本数据类型
Kotlin 基本数据类型(2025年中文讲解)
Kotlin 是一种静态类型编程语言,运行在 JVM 上,其基本数据类型设计简洁,与 Java 类似但更现代化。Kotlin 没有原始类型(如 Java 的 int
),所有类型都是对象,支持类型推断和空安全。2025年,Kotlin 2.0(K2 编译器)优化了性能,广泛应用于 Android、后端和跨平台开发(Kotlin Multiplatform)。本教程详细讲解 Kotlin 基本数据类型,包含定义、用法、代码示例和注意事项,基于官方文档、CSDN 和知乎实践,适合初学者快速上手。
一、Kotlin 基本数据类型概览(必知)
Kotlin 的基本数据类型分为以下几类,底层基于 JVM 对象,但编译时优化为 Java 原始类型(性能接近 Java)。所有类型支持空安全(通过 ?
声明可空)。
类别 | 数据类型 | 描述 | 大小(位) | 示例值 |
---|---|---|---|---|
整数 | Byte | 8位有符号整数 | 8 | val b: Byte = 127 |
Short | 16位有符号整数 | 16 | val s: Short = 32767 | |
Int | 32位有符号整数(最常用) | 32 | val i: Int = 12345 | |
Long | 64位有符号整数 | 64 | val l: Long = 123456L | |
浮点数 | Float | 32位浮点数 | 32 | val f: Float = 3.14f |
Double | 64位浮点数(默认浮点类型) | 64 | val d: Double = 3.14159 | |
字符 | Char | 单字符,Unicode 编码 | 16 | val c: Char = 'A' |
布尔 | Boolean | 真/假 | – | val b: Boolean = true |
字符串 | String | 不可变字符串 | – | val s: String = "Hello" |
关键特点:
- 无原始类型:Kotlin 所有类型(如
Int
)是对象,支持方法调用(如123.toString()
),但编译为 JVM 原始类型(如int
)以优化性能。 - 空安全:默认非空,需显式声明可空(如
Int?
)。 - 类型推断:无需显式声明类型,编译器自动推断。
- 2025年趋势:Kotlin 2.0 优化了类型推断和性能,Android 开发中
Int
、Double
和String
最常用,KMP 项目中类型一致性增强。
二、基本数据类型用法(必会)
以下详细讲解每种类型的用法,包含代码示例,直接可运行于 Kotlin Playground(https://play.kotlinlang.org/)。
1. 整数类型(Byte, Short, Int, Long)
- 定义与初始化:
val byte: Byte = 127 // 范围:-128 到 127
val short: Short = 32767 // 范围:-32768 到 32767
val int: Int = 12345 // 范围:-2^31 到 2^31-1
val long: Long = 123456789L // 加 L 表示 Long
- 类型推断:
val num = 42 // 自动推断为 Int
val bigNum = 123456789L // 自动推断为 Long
- 操作:支持常见运算(
+
、-
、*
、/
)和方法。
val sum = num + 10 // 52
println(num.toString()) // 输出:42
println(num.toDouble()) // 转换为 Double:42.0
2. 浮点数类型(Float, Double)
- 定义:
val float: Float = 3.14f // 加 f 表示 Float
val double: Double = 3.14159 // 默认浮点类型
- 操作:支持数学运算和精度控制。
val result = double * 2 // 6.28318
println(float.toInt()) // 转换为 Int:3
- 注意:
Float
精度较低(6-7 位小数),Double
适合高精度(15-16 位)。
3. 字符类型(Char)
- 定义:用单引号表示,支持 Unicode。
val char: Char = 'A'
val unicode: Char = '\u0041' // 等同于 'A'
- 操作:可转换为整数(ASCII)或字符串。
println(char.toInt()) // 输出:65 (ASCII 值)
println(char.toString()) // 输出:A
4. 布尔类型(Boolean)
- 定义:仅
true
或false
。
val isActive: Boolean = true
val isEmpty = false
- 操作:支持逻辑运算(
&&
、||
、!
)。
val result = isActive && !isEmpty // true
5. 字符串类型(String)
- 定义:不可变,用双引号,支持模板表达式。
val str: String = "Hello, Kotlin"
val name = "Alice"
val greeting = "Hi, $name! Your name has ${name.length} letters."
println(greeting) // 输出:Hi, Alice! Your name has 5 letters.
- 常用方法:
println(str.length) // 12
println(str.uppercase()) // HELLO, KOTLIN
println(str.substring(0, 5)) // Hello
6. 空安全(所有类型通用)
- 可空类型:加
?
表示可为空。
val nullableInt: Int? = null
val length = nullableInt?.toString() ?: "Unknown" // 空则返回 Unknown
println(length) // 输出:Unknown
- 非空断言(慎用):
val forced = nullableInt!! // 若 null 抛 NullPointerException
三、实践示例
以下是一个综合示例,展示多种数据类型:
fun main() {
val age: Int = 25
val height: Double = 1.75
val initial: Char = 'A'
val isStudent: Boolean = true
val name: String? = "Alice"
println("Name: $name, Initial: $initial")
println("Age: $age, Height: $height m, Student: $isStudent")
// 空安全
val nameLength = name?.length ?: 0
println("Name length: $nameLength")
// 类型转换
val ageAsString = age.toString()
println("Age as string: $ageAsString")
}
输出:
Name: Alice, Initial: A
Age: 25, Height: 1.75 m, Student: true
Name length: 5
Age as string: 25
四、注意事项与最佳实践
- 优先类型推断:
- 避免显式声明类型(如
val num = 42
优于val num: Int = 42
),简洁且安全。
- 空安全:
- 默认用非空类型,需可空时加
?
。 - 优先用
?.
和?:
,避免!!
(易抛异常)。
- 数字转换:
- 用
toInt()
、toDouble()
等显式转换,避免隐式转换错误。
val str = "123"
val num = str.toIntOrNull() ?: 0 // 安全转换
- 性能优化:
- Kotlin 编译器将
Int
等优化为 JVM 原始类型,但大量对象操作(如循环中toString()
)需注意性能。
- 2025年趋势:
- Kotlin 2.0 优化类型推断,减少编译错误。
- Android 开发中
Int
、Double
、String
最常用,结合 Jetpack Compose。 - KMP 项目强调类型一致性,跨平台开发无额外转换。
五、学习建议
- 练习:用 Kotlin Playground(https://play.kotlinlang.org/)运行示例,掌握类型转换和空安全。
- 资源:
- 官方文档:https://kotlinlang.org/docs/basic-types.html
- B站:尚硅谷 Kotlin 教程(免费)。
- CSDN:搜索“Kotlin 数据类型”。
- 实践:写小型程序(如计算器),熟悉
Int
、Double
和String
操作。 - 时间:1-2 天掌握基本类型,1 周熟悉空安全和转换。
六、总结
Kotlin 基本数据类型必知包括整数(Byte
、Int
、Long
)、浮点数(Float
、Double
)、Char
、Boolean
和 String
,必会定义、操作和空安全处理。2025年,Kotlin 2.0 提升性能,Android 和 KMP 项目中数据类型使用更高效。相比 Java,Kotlin 类型更安全、简洁,适合初学者。
如果有具体问题(如类型转换报错)或需 Android 示例,告诉我,我可以提供代码或深入讲解!