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 额外操作 返回对象本身
相关推荐
格林威1 小时前
Baumer工业相机堡盟相机Chunk功能全解析:如何在图像中嵌入时间戳、编码器值等元数据?
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·机器视觉
南宫萧幕1 小时前
锂电池二阶 RC 模型仿真实战:从理论解析到 Simulink 闭环搭建全流程
开发语言·人工智能·算法·机器学习
水木流年追梦1 小时前
【python因果库实战29】LaLonde 数据集2
开发语言·python·数据挖掘·langchain·机器人
不会编程的懒洋洋1 小时前
WPF 性能优化+异步+渲染
开发语言·笔记·性能优化·c#·wpf·图形渲染·线程
故事和你911 小时前
洛谷-数据结构2-1-二叉堆与树状数组2
开发语言·javascript·数据结构·算法·ecmascript·动态规划·图论
赏金术士1 小时前
Kotlin 从入门到进阶 之面向对象 OOP 模块(三)
开发语言·网络·kotlin
凯瑟琳.奥古斯特1 小时前
懒加载技巧优化栈增减操作(力扣3629)
开发语言·数据结构·算法
lihongli0001 小时前
关于c++中锁的种类与使用
java·开发语言·c++
hans汉斯1 小时前
基于LSTM与扩展卡尔曼滤波的无人机机载电子磁干扰补偿研究
开发语言·人工智能·算法·目标检测·lstm·人机交互·无人机