Kotlin 变量与基本数据类型详解
一、变量声明
1. val
vs var
val
:不可变变量(只读),类似 Java 的final
var
:可变变量
val name = "Kotlin" // 类型推断为 String
var age = 25 // 类型推断为 Int// name = "Java" // 编译错误:Val cannot be reassigned
age = 26 // 合法操作
2. 显式类型声明
val score: Double = 95.5
var isStudent: Boolean = true
二、基本数据类型
1. 数值类型
类型 | 位宽 | 范围 | 示例 |
---|---|---|---|
Byte | 8 | -128 ~ 127 | val b: Byte = 127 |
Short | 16 | -32768 ~ 32767 | val s = 32767 |
Int | 32 | -2^31 ~ 2^31-1 | val i = 42 |
Long | 64 | -2^63 ~ 2^63-1 | val l = 123L |
Float | 32 | 约±3.4e38 | val f = 3.14f |
Double | 64 | 约±1.7e308 | val d = 3.14 |
注意:Kotlin 中没有隐式类型转换,必须显式转换:
val numInt: Int = 100
val numLong: Long = numInt.toLong() // 正确
// val numLong: Long = numInt // 错误
2. 布尔类型(Boolean)
val isTrue: Boolean = true
val isAdult = age >= 18 // 推断为 Boolean
3. 字符类型(Char)
使用单引号,支持 Unicode:
val letter: Char = 'A'
val unicodeChar = '\u0041' // 'A'
4. 字符串(String)
- 支持模板表达式
- 原生字符串(保留格式)
// 普通字符串
val message = "Hello, $name! Age is ${age + 1}"// 多行文本
val text = """First lineSecond lineThird line
""".trimIndent()
三、数组类型
1. 通用数组(Array)
// 创建方式1:arrayOf
val numbers = arrayOf(1, 2, 3)// 创建方式2:工厂函数
val zeros = Array(3) { 0 } // [0, 0, 0]// 访问元素
println(numbers[0]) // 输出 1
2. 基本类型数组
更高效,避免装箱拆箱:
val intArray: IntArray = intArrayOf(1, 2, 3)
val charArray = charArrayOf('a', 'b', 'c')
四、特殊类型
1. Any 类型
所有类的超类(类似 Java 的 Object):
val anyValue: Any = 42 // 可接受任意类型
2. Unit 类型
相当于 void
,用于无返回值函数:
fun printMessage(): Unit {println("This returns Unit")
}
3. Nothing 类型
表示永不返回的函数:
fun fail(): Nothing {throw RuntimeException("Error occurred")
}
五、类型检查与转换
1. 智能类型推断
when (val obj: Any = "Kotlin") {is String -> println(obj.length) // 自动转换为 Stringis Int -> println(obj + 1)
}
2. 安全转换
val str: String? = "123"
val num: Int? = str as? Int // 安全转换,失败返回 null
六、总结对比
特性 | Kotlin | Java |
---|---|---|
变量声明 | val /var + 类型推断 | 显式类型声明 |
空安全 | 内置(? 符号) | 需额外注解 |
基本类型 | 全对象化 | 原始类型 + 包装类 |
数组 | Array + 基本类型专用数组 | 单一数组类型 |
建议在实际编码中充分利用类型推断和安全特性,写出更简洁、安全的 Kotlin 代码。