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)
}

十、总结 #

基本数据类型要点:

  1. 整数:Byte、Short、Int、Long,默认 Int
  2. 浮点:Float、Double,默认 Double
  3. 字符:Char,使用单引号
  4. 布尔:Boolean,true/false
  5. 类型转换:必须显式转换
  6. 区间..untildownTostep

下一步,让我们学习 可空类型

最后更新:2026-03-27