Kotlin数据类型
外观
Kotlin数据类型[编辑 | 编辑源代码]
Kotlin是一种静态类型语言,所有变量在编译时都必须具有明确的类型。Kotlin的数据类型分为两大类:基本数据类型和引用数据类型。本节将详细介绍Kotlin中的数据类型及其特性。
基本数据类型[编辑 | 编辑源代码]
Kotlin的基本数据类型包括数值类型、字符类型和布尔类型。尽管Kotlin是面向对象的语言,但为了提高性能,编译器会将基本数据类型优化为JVM的原始类型(Primitive Types)。
数值类型[编辑 | 编辑源代码]
Kotlin提供以下数值类型:
类型 | 大小(比特) | 最小值 | 最大值 |
---|---|---|---|
Byte |
8 | -128 | 127 |
Short |
16 | -32768 | 32767 |
Int |
32 | -231 | 231-1 |
Long |
64 | -263 | 263-1 |
Float |
32 | 1.4E-45 | 3.4028235E38 |
Double |
64 | 4.9E-324 | 1.7976931348623157E308 |
示例代码[编辑 | 编辑源代码]
fun main() {
val byteValue: Byte = 127
val shortValue: Short = 32767
val intValue = 2147483647 // 类型推断为Int
val longValue = 9223372036854775807L // 后缀L表示Long
val floatValue = 3.14F // 后缀F表示Float
val doubleValue = 3.1415926535 // 默认是Double
println("Byte: $byteValue")
println("Short: $shortValue")
println("Int: $intValue")
println("Long: $longValue")
println("Float: $floatValue")
println("Double: $doubleValue")
}
输出:
Byte: 127 Short: 32767 Int: 2147483647 Long: 9223372036854775807 Float: 3.14 Double: 3.1415926535
字符类型[编辑 | 编辑源代码]
Char
表示单个16位Unicode字符,用单引号表示。
val letter: Char = 'A'
val unicodeChar: Char = '\u0041' // Unicode表示'A'
布尔类型[编辑 | 编辑源代码]
Boolean
表示逻辑值,只有true
和false
两个值。
val isTrue: Boolean = true
val isFalse = false // 类型推断
引用数据类型[编辑 | 编辑源代码]
Kotlin中的所有非基本类型都是引用类型,包括:
- 字符串(
String
) - 数组(
Array
) - 集合(如
List
,Set
,Map
) - 自定义类
字符串[编辑 | 编辑源代码]
Kotlin中的字符串是不可变的,用双引号表示。支持模板表达式和原始字符串(三重引号)。
val name = "Kotlin"
val message = "Hello, $name!" // 字符串模板
val multiLine = """
This is a
multi-line
string
""".trimIndent()
数组[编辑 | 编辑源代码]
Kotlin数组用Array
类表示,创建方式有多种:
val numbers = arrayOf(1, 2, 3) // 使用arrayOf函数
val zeros = Array(3) { 0 } // 大小为3,初始化为0
val intArray = intArrayOf(1, 2, 3) // 基本类型数组
类型转换[编辑 | 编辑源代码]
Kotlin不支持隐式类型转换,必须显式转换:
val intValue: Int = 100
val longValue: Long = intValue.toLong() // 显式转换
可空类型[编辑 | 编辑源代码]
Kotlin的类型系统区分可空和非空引用,通过在类型后加?
表示可空:
var nullableString: String? = null // 可空字符串
var nonNullString: String = "Hello" // 非空字符串
类型检查与智能转换[编辑 | 编辑源代码]
使用is
操作符检查类型,编译器会自动智能转换:
fun printLength(obj: Any) {
if (obj is String) {
println(obj.length) // obj自动转换为String
}
}
实际应用案例[编辑 | 编辑源代码]
用户信息处理[编辑 | 编辑源代码]
data class User(
val id: Int,
val name: String,
val age: Int? // 年龄可为null
)
fun processUser(user: User) {
val ageDescription = user.age?.let { "Age: $it" } ?: "Age not provided"
println("${user.name}, $ageDescription")
}
温度转换[编辑 | 编辑源代码]
fun convertTemperature(value: Double, from: String, to: String): Double {
return when {
from == "C" && to == "F" -> value * 9/5 + 32
from == "F" && to == "C" -> (value - 32) * 5/9
else -> throw IllegalArgumentException("Unsupported conversion")
}
}
类型关系图[编辑 | 编辑源代码]
数学表示[编辑 | 编辑源代码]
Kotlin数值类型的范围可以用数学表达式表示:
总结[编辑 | 编辑源代码]
Kotlin的数据类型系统设计既安全又高效,通过区分基本类型和引用类型、支持可空类型检查等特性,帮助开发者编写更健壮的代码。理解这些数据类型及其转换规则是掌握Kotlin编程的基础。