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 额外操作 返回对象本身
相关推荐
不会C语言的男孩1 小时前
C++ Primer Plus 第8章:函数探幽
开发语言·c++
方也_arkling9 小时前
【Java-Day08】static / final / 枚举
java·开发语言
风吹夏回9 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei119 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1129 小时前
web-第一次课后作业
java·开发语言·idea
小熊Coding9 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋99 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
xiaoshuaishuai810 小时前
C# 内存管理与资源泄漏
开发语言·c#
lsx20240610 小时前
SVN 检出操作
开发语言
basketball61611 小时前
C++ NULL 和 nullptr 区别 以及 nullptr 的核心实现
java·开发语言·c++