Kotlin变量与数据类型详解

Kotlin 变量与基本数据类型详解

一、变量声明

1. val vs var

  • val :不可变变量(只读),类似 Java 的 final
  • var:可变变量
kotlin 复制代码
val name = "Kotlin"   // 类型推断为 String
var age = 25          // 类型推断为 Int

// name = "Java"      // 编译错误:Val cannot be reassigned
age = 26              // 合法操作

2. 显式类型声明

kotlin 复制代码
val score: Double = 95.5
var isStudent: Boolean = true

二、基本数据类型

1. 数值类型

类型 位宽 范围 示例
Byte 8 -128 ~ 127 val b: Byte = 127
Short 16 -32768 ~ 32767 val s = 32767
Int 32 -2^31 ~ 2^31-1 val i = 42
Long 64 -2^63 ~ 2^63-1 val l = 123L
Float 32 约±3.4e38 val f = 3.14f
Double 64 约±1.7e308 val d = 3.14

注意:Kotlin 中没有隐式类型转换,必须显式转换:

kotlin 复制代码
val numInt: Int = 100
val numLong: Long = numInt.toLong()  // 正确
// val numLong: Long = numInt       // 错误

2. 布尔类型(Boolean)

kotlin 复制代码
val isTrue: Boolean = true
val isAdult = age >= 18  // 推断为 Boolean

3. 字符类型(Char)

使用单引号,支持 Unicode:

kotlin 复制代码
val letter: Char = 'A'
val unicodeChar = '\u0041'  // 'A'

4. 字符串(String)

  • 支持模板表达式
  • 原生字符串(保留格式)
kotlin 复制代码
// 普通字符串
val message = "Hello, $name! Age is ${age + 1}"

// 多行文本
val text = """
    First line
    Second line
     Third line
""".trimIndent()

三、数组类型

1. 通用数组(Array)

kotlin 复制代码
// 创建方式1:arrayOf
val numbers = arrayOf(1, 2, 3)

// 创建方式2:工厂函数
val zeros = Array(3) { 0 }  // [0, 0, 0]

// 访问元素
println(numbers[0])  // 输出 1

2. 基本类型数组

更高效,避免装箱拆箱:

kotlin 复制代码
val intArray: IntArray = intArrayOf(1, 2, 3)
val charArray = charArrayOf('a', 'b', 'c')

四、特殊类型

1. Any 类型

所有类的超类(类似 Java 的 Object):

kotlin 复制代码
val anyValue: Any = 42  // 可接受任意类型

2. Unit 类型

相当于 void,用于无返回值函数:

kotlin 复制代码
fun printMessage(): Unit {
    println("This returns Unit")
}

3. Nothing 类型

表示永不返回的函数:

kotlin 复制代码
fun fail(): Nothing {
    throw RuntimeException("Error occurred")
}

五、类型检查与转换

1. 智能类型推断

kotlin 复制代码
when (val obj: Any = "Kotlin") {
    is String -> println(obj.length)  // 自动转换为 String
    is Int -> println(obj + 1)
}

2. 安全转换

kotlin 复制代码
val str: String? = "123"
val num: Int? = str as? Int  // 安全转换,失败返回 null

六、总结对比

特性 Kotlin Java
变量声明 val/var + 类型推断 显式类型声明
空安全 内置(?符号) 需额外注解
基本类型 全对象化 原始类型 + 包装类
数组 Array + 基本类型专用数组 单一数组类型

建议在实际编码中充分利用类型推断和安全特性,写出更简洁、安全的 Kotlin 代码。

相关推荐
友友马9 分钟前
『QT』窗口 (一)
开发语言·数据库·qt
APIshop12 分钟前
Python 零基础写爬虫:一步步抓取商品详情(超细详解)
开发语言·爬虫·python
AI科技星1 小时前
为什么宇宙无限大?
开发语言·数据结构·经验分享·线性代数·算法
Appreciate(欣赏)1 小时前
JAVA使用poi类读取xlxs文件内容拼接成添加数据SQL
java·开发语言·sql
oioihoii2 小时前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
开发语言·c++
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于JAVA的恒星酒店客房管理系统为例,包含答辩的问题和答案
java·开发语言
思密吗喽2 小时前
景区行李寄存管理系统
java·开发语言·spring boot·毕业设计·课程设计
Rust语言中文社区2 小时前
【Rust日报】Dioxus 用起来有趣吗?
开发语言·后端·rust
小灰灰搞电子2 小时前
Rust Slint实现颜色选择器源码分享
开发语言·后端·rust
Jing_Rainbow2 小时前
【 Weapp-1 /Lesson18(2025-11-03)】# 微信小程序开发全解析:从项目结构到生态优势 🚀
微信·微信小程序·程序员