Kotlin 基本数据类型 #
一、数据类型概述 #
Kotlin 是静态类型语言,所有变量都有确定的类型。基本数据类型包括:
| 类别 | 类型 | 位数 | 取值范围 |
|---|---|---|---|
| 整数 | Byte | 8 | -128 ~ 127 |
| 整数 | Short | 16 | -32768 ~ 32767 |
| 整数 | Int | 32 | -2³¹ ~ 2³¹-1 |
| 整数 | Long | 64 | -2⁶³ ~ 2⁶³-1 |
| 浮点 | Float | 32 | 约 ±3.4E38 |
| 浮点 | Double | 64 | 约 ±1.7E308 |
| 字符 | Char | 16 | Unicode 字符 |
| 布尔 | Boolean | 1 | true / false |
二、整数类型 #
2.1 类型声明 #
kotlin
val byte: Byte = 127
val short: Short = 32767
val int: Int = 2147483647
val long: Long = 9223372036854775807L // 使用 L 后缀
2.2 类型推断 #
Kotlin 根据数值自动推断类型:
kotlin
val a = 10 // Int
val b = 3000000000 // Long(超出 Int 范围)
val c = 100L // 显式 Long
2.3 字面量表示 #
kotlin
// 十进制
val decimal = 100
// 十六进制(0x 前缀)
val hex = 0xFF
// 二进制(0b 前缀)
val binary = 0b1010
// 八进制(不支持)
// val octal = 0100 // 错误
// 下划线分隔(提高可读性)
val million = 1_000_000
val creditCard = 1234_5678_9012_3456L
2.4 无符号整数 #
Kotlin 1.3+ 支持无符号整数:
kotlin
val uByte: UByte = 255u
val uShort: UShort = 65535u
val uInt: UInt = 4294967295u
val uLong: ULong = 18446744073709551615uL
// 类型推断
val a = 100u // UInt
val b = 100uL // ULong
三、浮点类型 #
3.1 Float 和 Double #
kotlin
val float: Float = 3.14f // 使用 f 或 F 后缀
val double: Double = 3.14 // 默认 Double
// 科学计数法
val scientific = 1.5e10 // Double
val scientificF = 1.5e10f // Float
3.2 精度问题 #
kotlin
val a = 0.1 + 0.2
println(a) // 0.30000000000000004
// 使用 BigDecimal 处理精确计算
import java.math.BigDecimal
val x = BigDecimal("0.1")
val y = BigDecimal("0.2")
println(x + y) // 0.3
3.3 特殊值 #
kotlin
val positiveInfinity = Double.POSITIVE_INFINITY
val negativeInfinity = Double.NEGATIVE_INFINITY
val nan = Double.NaN
println(1.0 / 0.0) // Infinity
println(-1.0 / 0.0) // -Infinity
println(0.0 / 0.0) // NaN
// 判断特殊值
println(Double.isNaN(nan)) // true
println(Double.isInfinite(positiveInfinity)) // true
四、字符类型 #
4.1 字符声明 #
kotlin
val char: Char = 'A'
val digit: Char = '1'
val symbol: Char = '@'
4.2 转义字符 #
| 转义符 | 含义 |
|---|---|
\t |
制表符 |
\b |
退格 |
\n |
换行 |
\r |
回车 |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
\$ |
美元符号 |
\uXXXX |
Unicode 字符 |
kotlin
val tab = '\t'
val newLine = '\n'
val unicode = '\u4E2D' // '中'
4.3 字符操作 #
kotlin
val char = 'A'
// 转换为数字
val code = char.code // 65
val int = char - 'A' // 0
// 判断字符类型
char.isDigit() // 是否数字
char.isLetter() // 是否字母
char.isUpperCase() // 是否大写
char.isLowerCase() // 是否小写
char.isWhitespace() // 是否空白
// 大小写转换
char.uppercaseChar() // 'A' -> 'A'
char.lowercaseChar() // 'A' -> 'a'
五、布尔类型 #
5.1 布尔值 #
kotlin
val isActive: Boolean = true
val isComplete: Boolean = false
5.2 逻辑运算 #
kotlin
val a = true
val b = false
// 与运算
val and = a && b // false
// 或运算
val or = a || b // true
// 非运算
val not = !a // false
// 异或
val xor = a.xor(b) // true
5.3 短路求值 #
kotlin
fun checkA(): Boolean {
println("checkA called")
return true
}
fun checkB(): Boolean {
println("checkB called")
return false
}
// 短路求值
val result = checkA() || checkB() // 只调用 checkA()
// 输出: checkA called
六、数值操作 #
6.1 算术运算 #
kotlin
val a = 10
val b = 3
val sum = a + b // 13
val diff = a - b // 7
val product = a * b // 30
val quotient = a / b // 3
val remainder = a % b // 1
// 复合赋值
var x = 10
x += 5 // x = x + 5
x -= 3 // x = x - 3
x *= 2 // x = x * 2
x /= 4 // x = x / 4
6.2 比较运算 #
kotlin
val a = 10
val b = 20
a == b // false
a != b // true
a < b // true
a <= b // true
a > b // false
a >= b // false
// 范围检查
a in 1..100 // true(1 到 100)
a !in 1..5 // true(不在 1 到 5)
6.3 位运算 #
kotlin
val a = 0b1010 // 10
val b = 0b1100 // 12
// 按位与
val and = a and b // 0b1000 (8)
// 按位或
val or = a or b // 0b1110 (14)
// 按位异或
val xor = a xor b // 0b0110 (6)
// 按位取反
val inv = a.inv() // 0b...11110101
// 左移
val shl = a shl 2 // 0b101000 (40)
// 右移(带符号)
val shr = a shr 1 // 0b101 (5)
// 无符号右移
val ushr = a ushr 1
6.4 数学函数 #
kotlin
import kotlin.math.*
val x = -3.7
abs(x) // 3.7(绝对值)
round(x) // -4.0(四舍五入)
floor(x) // -4.0(向下取整)
ceil(x) // -3.0(向上取整)
sqrt(16.0) // 4.0(平方根)
pow(2.0, 3.0) // 8.0(幂运算)
log(10.0) // 自然对数
log10(100.0) // 2.0(常用对数)
sin(PI / 2) // 1.0(正弦)
cos(0.0) // 1.0(余弦)
max(10, 20) // 20
min(10, 20) // 10
七、类型转换 #
7.1 显式转换 #
Kotlin 不支持隐式类型转换:
kotlin
val a: Int = 100
// val b: Long = a // 错误:类型不匹配
// 正确:显式转换
val b: Long = a.toLong()
7.2 转换函数 #
kotlin
val int = 100
int.toByte()
int.toShort()
int.toInt()
int.toLong()
int.toFloat()
int.toDouble()
int.toChar()
// 字符串转换
int.toString()
"100".toInt()
"3.14".toDouble()
"true".toBoolean()
7.3 自动类型提升 #
运算时会自动提升类型:
kotlin
val a: Int = 10
val b: Long = 20L
val result = a + b // Long(自动提升)
八、数字与字符串转换 #
8.1 数字转字符串 #
kotlin
val num = 123
num.toString() // "123"
num.toString(2) // "1111011"(二进制)
num.toString(16) // "7b"(十六进制)
// 格式化
String.format("%04d", 5) // "0005"
String.format("%.2f", 3.14159) // "3.14"
8.2 字符串转数字 #
kotlin
"123".toInt()
"123".toLong()
"3.14".toFloat()
"3.14".toDouble()
// 进制转换
"FF".toInt(16) // 255(十六进制)
"1010".toInt(2) // 10(二进制)
// 安全转换
"abc".toIntOrNull() // null
"123".toIntOrNull() // 123
九、区间与数列 #
9.1 整数区间 #
kotlin
// 闭区间
val range1 = 1..10 // 1 到 10
val range2 = 'a'..'z' // a 到 z
// 半开区间
val range3 = 1 until 10 // 1 到 9
// 降序区间
val range4 = 10 downTo 1 // 10 到 1
// 带步长
val range5 = 1..10 step 2 // 1, 3, 5, 7, 9
val range6 = 10 downTo 1 step 2 // 10, 8, 6, 4, 2
9.2 区间操作 #
kotlin
val range = 1..100
// 检查包含
5 in range // true
101 in range // false
// 区间属性
range.first // 1
range.last // 100
range.step // 1
// 遍历
for (i in 1..5) {
println(i)
}
十、总结 #
基本数据类型要点:
- 整数:Byte、Short、Int、Long,默认 Int
- 浮点:Float、Double,默认 Double
- 字符:Char,使用单引号
- 布尔:Boolean,true/false
- 类型转换:必须显式转换
- 区间:
..、until、downTo、step
下一步,让我们学习 可空类型!
最后更新:2026-03-27