基本类型
约 750 字大约 3 分钟
2025-05-15
数字
整数类型
Kotlin
提供了一组表示数字的内置类型。 对于整数,有四种类型。
val one = 1 // Int
val threeBillion = 3000000000 // Long
val oneLong = 1L // Long
val oneByte: Byte = 1
当初始化一个没有显式指定类型的变量时,编译器会自动推断为自 Int
起足以表示该值的最小类型。 如果不超过 Int
的取值范围,那么类型是 Int
。 如果超出了该范围,那么类型是 Long
。
浮点类型
Kotlin
提供了两种浮点类型 Float
与 Double
。Float
表达单精度, Double
表达双精度。
类型 | 大小(比特数) | 有效数字比特数 | 指数比特数 | 十进制位数 |
---|---|---|---|---|
Float | 32 | 24 | 8 | 6-7 |
Double | 64 | 53 | 11 | 15-16 |
对于以小数初始化的变量,编译器会推断为 Double 类型:
val pi = 3.14 // Double
val one: Double = 1 // 初始化类型不匹配
如果将一个值显式为 Float
类型,需要添加 f
或 F 后缀
。如果值包含了多于 7 位十进制数,那么会将其舍入:
val e = 2.7182818284 // Double
val eFloat = 2.7182818284f // Float,实际值为 2.7182817
可以使用下划线使数字常量更易读:
val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
Kotlin 中的数字没有隐式拓宽转换,因此拥有指定类型参数的函数不能调用其他类型的值。如需将数值转换为不同的类型,需使用显式转换。
显式数字转换
所有数字类型都支持转换为其他类型:
toByte(): Byte // 对 Float 与 Double 禁用
toShort(): Short
toInt(): Int // 省略小数部分
toLong(): Long
toFloat(): Float
toDouble(): Double
布尔值
Boolean 类型表示可以有 true 与 false 两个值的布尔对象。
内置运算有:
- || —— 析取(逻辑或)
- && —— 合取(逻辑与)
- ! —— 否定(逻辑非)
字符与字符串
字符用 Char
类型表示。 字符字面值用单引号括起来: '1'。
val aChar: Char = 'a'
// a
println(aChar)
字符串用 String
类型表示,可以使用索引运算符访问: string[i]。
val str = "abcd"
// b
println(str[1])
多行字符串 可以包含换行以及任意文本。 它使用三个引号(""")分界符括起来,内部没有转义并且可以包含换行以及任何其他字符:
val text = """
for (c in "foo")
print(c)
"""
字符串字面值可以包含模板表达式——一些小段代码,会求值并把结果合并到字符串中。
val num = 1
val s = "abc"
// number: 1
println("number: $num")
// abc.length is 3
println("$s.length is ${s.length}")
数组
数组是一种保存固定数量相同类型或其子类型的值的数据结构。
创建数组
使用 arrayOf()
, arrayOfNulls()
, emptyArray()
创建或者使用 Array
构造器。
val simpleArray = arrayOf(1, 2, 3)
println(simpleArray.joinToString()) // 1, 2, 3
simpleArray[0] = 0
println(simpleArray.joinToString()) // 0, 2, 3
val nullArray: Array<Any?> = arrayOfNulls(3)
println(nullArray.joinToString()) // null, null, null
var exampleArray:Array<Any?> = emptyArray()
println(exampleArray.joinToString())
val initArray = Array(3) { 0 }
println(initArray.joinToString()) // 0, 0, 0