Kotlin 数据类型
Kotlin 拥有一套强大的类型系统,它包含以下主要类别:
- 基本数据类型: 包括 Int、Long、Float、Double、Boolean、Char 等,用于表示常见的数值、逻辑值和字符。
- 字符串类型 (String): 用于表示文本信息。
- 数组类型 (Array): 用于存储相同类型的多个数据项。
- 集合类型 (Collection): 包括 List、Set、Map 等,用于存储和操作数据集合。
- 自定义类型: 可以使用类 (Class)、接口 (Interface)、枚举 (Enum) 等自定义数据类型。
本节将重点介绍基本数据类型、类型推断、类型转换和字符串模板。
基本数据类型
Kotlin 的基本数据类型与 Java 非常相似,但也有一些区别:
类型 | 描述 | 取值范围 | 默认值 |
Int | 32 位整数 | -2,147,483,648 到 2,147,483,647 | 0 |
Long | 64 位整数 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
Float | 32 位单精度浮点数 | 约 ±3.40282347E+38F | 0.0f |
Double | 64 位双精度浮点数 | 约 ±1.79769313486231570E+308 | 0.0 |
Boolean | 布尔值 | true 或 false | false |
Char | 16 位 Unicode 字符 | ‘\u0000’ 到 ‘\uffff’ (0 到 65,535) | ‘\u0000’ |
需要注意的是,Kotlin 中的数字类型没有自动类型提升。例如,将 Int 类型的值赋给 Long 类型的变量需要进行显式类型转换。
类型推断
Kotlin 支持强大的类型推断功能,可以根据上下文自动推断变量的类型。这意味着你无需总是显式声明变量的类型,编译器可以帮助你完成这项工作。例如:
val age = 25 // 编译器自动推断 age 的类型为 Int
这里解释下:当你在 Kotlin 中写 val age = 25
时,虽然你没有显式声明 age
的类型,但编译器会根据赋给 age
的值(在这里是整数 25)推断出其类型为 Int
。一旦类型被推断出来,它就被固定了,不能在运行时改变。这种类型推断只是为了编程的便利,减少了冗余代码,但底层仍然是静态类型检查。
类型转换
当需要将一种数据类型的值转换为另一种数据类型时,需要进行类型转换。Kotlin 提供了多种类型转换方式:
- 显式类型转换: 使用 to 关键字及其后跟目标类型名称进行转换,例如
toInt()
、toString()
、toDouble()
等。 - 隐式类型转换: 在某些情况下,编译器会自动进行类型转换,例如将
Int
类型的值赋给Double
类型的变量。
需要注意的是,不安全的类型转换可能会导致运行时错误。
字符串模板
Kotlin 的字符串模板功能可以方便地将变量和表达式的值嵌入到字符串中。使用 ${}
语法将变量或表达式包裹起来即可。例如:
val name = "Alice"
val greeting = "Hello, ${name}!" // greeting 的值为 "Hello, Alice!"