Kotlin 从入门到进阶 之基础语法模块(一)

Kotlin 基础

1. 变量与常量

kotlin 复制代码
// val = 不可变引用(类似 Java final)
val name: String = "windCloud"
val age = 25              // 类型推断

// var = 可变引用
var counter = 0
counter = 1               // OK
// name = "other"         // 编译错误

// 顶层变量
val GLOBAL_CONST = 100    // 编译时常量
var globalVar = "I am global"

2. 基本数据类型

kotlin 复制代码
// 数值类型
val int: Int = 42
val long: Long = 9999999999L
val double: Double = 3.14
val float: Float = 3.14f

// 布尔
val isActive: Boolean = true

// 字符
val grade: Char = 'A'

// 字符串
val str: String = "Hello"
val str2 = String(charArrayOf('H', 'i'))

// 数组
val arr: Array<Int> = arrayOf(1, 2, 3)
val intArray = intArrayOf(1, 2, 3)      // IntArray 更高效
val list = listOf(1, 2, 3)              // 常用替代

3. 流程控制

kotlin 复制代码
// if-else
val max = if (a > b) a else b

// when(替代 switch)
when (x) {
    1 -> println("one")
    2, 3 -> println("two or three")
    in 4..10 -> println("in range")
    else -> println("unknown")
}

// for 循环
for (i in 0..10) { }        // 0 到 10(含)
for (i in 0 until 10) { }   // 0 至 9(不含)
for (i in 0..10 step 2) { }  // 步长 2
for (item in list) { }

// while / do-while
while (condition) { }
do { } while (condition)

// 区间判断
val inRange = x in 1..100
val notIn = x !in 1..100

4. 字符串

kotlin 复制代码
val name = "Kotlin"

// 字符串模板
println("Hello, $name")           // Hello, Kotlin
println("Length: ${name.length}") // Length: 6

// 换行
val multiline = """
    |第一行
    |第二行
    |缩进保留
    """.trimMargin()

// 原始字符串(无转义)
val path = """C:\Users\Thinkpad"""

// 字符串操作
str.uppercase()
str.lowercase()
str.substring(0, 4)
str.replace("old", "new")
str.split(",")

5. 空安全体系

kotlin 复制代码
// 可空类型必须用 ? 声明
var nullable: String? = null

// 安全调用
nullable?.length         // null 则返回 null

// Elvis 运算符 ?:
val len = nullable?.length ?: 0   // null 时返回 0

// 非空断言(慎用)
val len2 = nullable!!.length      // null 时抛异常

// let:空安全执行块
nullable?.let {
    println("Length is ${it.length}")
}

// run:在对象上执行代码块,返回结果
val result = str.run {
    this.uppercase()
}

// apply:配置对象,返回对象本身
val person = Person().apply {
    name = "windCloud"
    age = 25
}

// also:额外操作,返回对象本身
val list2 = mutableListOf(1, 2).also {
    println("Created list with $it")
}

// 完整示例
fun processString(input: String?): Int {
    return input?.let {
        if (it.isNotEmpty()) it.length
        else 0
    } ?: 0
}

快速对照表

关键字 用途 可变性
val 声明常量 引用不可变
var 声明变量 引用可变
? 可空类型 值可为 null
?. 安全调用 null 时短路
?: Elvis 运算符 null 时提供默认值
!! 非空断言 null 时抛异常
let 空安全执行 返回块结果
run 执行代码块 返回块结果
apply 配置对象 返回对象本身
also 额外操作 返回对象本身
相关推荐
阿里嘎多学长7 小时前
2026-10-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
布吉岛的石头7 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
小羊没烦恼!8 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
quantdash_cc8 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
昂好的day9 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
努力实干10 小时前
面向对象设计原则——C++
开发语言·c++·数码相机
NetX行者12 小时前
四语言 Hello World 背后:编译模型与运行时对比
开发语言
Pin_Qing13 小时前
账单没超,请求先被拒了
大数据·开发语言·人工智能
2601_9628857213 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python
郝亚军13 小时前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构