跳转到内容

Kotlin数据类型

来自代码酷
Admin留言 | 贡献2025年5月2日 (五) 00:21的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

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表示逻辑值,只有truefalse两个值。

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

类型关系图[编辑 | 编辑源代码]

graph TD A[Kotlin数据类型] --> B[基本数据类型] A --> C[引用数据类型] B --> D[数值类型] B --> E[Char] B --> F[Boolean] D --> G[Byte, Short, Int, Long] D --> H[Float, Double] C --> I[String] C --> J[Array] C --> K[集合] C --> L[自定义类]

数学表示[编辑 | 编辑源代码]

Kotlin数值类型的范围可以用数学表达式表示:

  • Byte[128,127]
  • Int[231,2311]
  • Double[4.9×10324,1.7976931348623157×10308]

总结[编辑 | 编辑源代码]

Kotlin的数据类型系统设计既安全又高效,通过区分基本类型和引用类型、支持可空类型检查等特性,帮助开发者编写更健壮的代码。理解这些数据类型及其转换规则是掌握Kotlin编程的基础。