声明变量:val var

Kotlin 声明变量只有两个关键字:

val name = "Null猫"    // 不可变(常量),赋值后不能再改
var age = 1            // 可变,可以随时修改

记住一个原则:能用 val 就用 val 不可变 = 更安全、更不容易出 bug

val name = "Null猫"
name = "改不了"  // ❌ 编译报错!val 不能重新赋值

var age = 1
age = 2          // ✅ var 可以重新赋值

类型声明

Kotlin 类型推断,大多数时候不需要你手动写类型:

val name = "Null猫"       // 编译器自动推断为 String
val age = 1               // 自动推断为 Int
val price = 9.9           // 自动推断为 Double
val isVip = true          // 自动推断为 Boolean

如果你想显式声明类型,写在变量名后面:

val name: String = "Null猫"
val age: Int = 1
val score: Double = 99.5
val isOnline: Boolean = true

基本数据类型

类型

说明

示例

Int

整数

1, 42, -7

Long

长整数

100L

Double

双精度浮点

3.14, 9.9

Float

单精度浮点

3.14f

Boolean

布尔值

true, false

Char

单个字符

'A', ''

String

字符串

"Hello"


字符串模板

这是 Kotlin 最爽的功能之一——直接在字符串里嵌入变量:

val name = "Null猫"
val age = 1

// $ 直接引用变量
println("我是name,今年age岁")
// 输出:我是Null猫,今年1岁

// ${} 可以嵌入表达式
println("明年我就${age + 1}岁了")
// 输出:明年我就2岁了

对比 Java "我是" + name + ",今年" + age + "",是不是清爽很多?


字符串原始形式

""" 三引号可以写多行字符串,不用转义:

val html = """
    <div>
        <h1>Hello</h1>
        <p>这是一段 HTML</p>
    </div>
""".trimIndent()

println(html)

trimIndent() 会自动去掉公共缩进,输出干净的文本。


类型转换

Kotlin 不会自动转换类型,必须显式转:

val num: Int = 42
val str: String = num.toString()    // Int → String: "42"
val back: Int = str.toInt()         // String → Int: 42

val d: Double = num.toDouble()      // Int → Double: 42.0
val f: Float = num.toFloat()        // Int → Float: 42.0f

如果转换可能失败(比如字符串不是数字),用安全版本:

val result = "abc".toIntOrNull()   // 返回 null,不会崩溃
val number = "123".toIntOrNull()   // 返回 123

本篇小结

要点

说明

val

不可变变量,优先使用

var

可变变量

类型推断

大多数时候不用写类型

字符串模板

变量{表达式}

类型转换

必须显式转换,用 toInt()