Kotlin 基础语法 #

一、程序结构 #

1.1 基本结构 #

一个 Kotlin 程序的基本结构:

kotlin
// 包声明(可选)
package com.example

// 导入语句(可选)
import java.util.*

// 顶层函数、类、对象等
fun main() {
    println("Hello, Kotlin!")
}

1.2 包声明 #

kotlin
package com.example.demo

fun sayHello() {
    println("Hello!")
}

class Person {
    var name: String = ""
}

1.3 导入 #

kotlin
// 导入单个类
import java.util.ArrayList

// 导入整个包
import java.util.*

// 导入函数
import kotlin.math.sqrt

// 导入时重命名
import java.util.ArrayList as JArrayList

二、注释 #

2.1 单行注释 #

kotlin
// 这是单行注释
val name = "Kotlin"  // 行尾注释

2.2 多行注释 #

kotlin
/*
 * 这是多行注释
 * 可以跨越多行
 * 用于详细说明
 */
fun calculate(a: Int, b: Int): Int {
    return a + b
}

2.3 文档注释 #

kotlin
/**
 * 计算两个数的和
 * 
 * @param a 第一个数
 * @param b 第二个数
 * @return 两数之和
 */
fun add(a: Int, b: Int): Int {
    return a + b
}

/**
 * 表示一个人的类
 * 
 * @property name 姓名
 * @property age 年龄
 * @constructor 创建一个 Person 实例
 */
class Person(val name: String, val age: Int) {
    /**
     * 打招呼
     * 
     * @return 问候语
     */
    fun greet(): String = "Hello, I'm $name"
}

2.4 注释嵌套 #

Kotlin 支持注释嵌套:

kotlin
/*
 * 外层注释开始
 * 
 * /*
 *  * 内层注释
 *  */
 * 
 * 外层注释结束
 */

三、标识符 #

3.1 命名规则 #

标识符用于命名变量、函数、类等,必须遵循以下规则:

  • 可以包含字母、数字、下划线
  • 必须以字母或下划线开头
  • 不能包含空格
  • 不能是 Kotlin 关键字
  • 区分大小写
kotlin
// 合法标识符
val name = "Kotlin"
val _count = 10
val userName = "admin"
val UserAge = 25

// 非法标识符
// val 123abc = ""      // 错误:以数字开头
// val my-name = ""     // 错误:包含连字符
// val class = ""       // 错误:是关键字

3.2 命名约定 #

类型 命名风格 示例
包名 全小写 com.example.demo
类/接口 PascalCase Person, UserService
函数 camelCase calculateTotal
变量 camelCase userName
常量 UPPER_SNAKE_CASE MAX_COUNT
类型参数 单个大写字母 T, E, K, V

3.3 反引号标识符 #

使用反引号可以使用关键字作为标识符:

kotlin
// 使用关键字作为函数名
fun `is`() = true
fun `in`() = "inside"

// 使用空格等特殊字符
val `my variable` = 10

// 调用
`is`()
`in`()
println(`my variable`)

四、关键字 #

4.1 硬关键字 #

硬关键字不能用作标识符:

关键字 用途
package 包声明
import 导入
class 类声明
interface 接口声明
object 对象声明
fun 函数声明
val 只读变量
var 可变变量
if 条件语句
else 条件语句
when 条件表达式
for 循环
while 循环
do 循环
return 返回
break 跳出循环
continue 继续循环
throw 抛出异常
try 异常处理
catch 异常捕获
finally 最终执行
this 当前实例
super 父类引用
null 空值
true 布尔真
false 布尔假
in 包含检查/遍历
is 类型检查
as 类型转换
typealias 类型别名

4.2 软关键字 #

软关键字在特定上下文中是关键字,其他情况可用作标识符:

kotlin
// file, where, by, get, set, field, property, etc.

// 作为标识符使用
val file = "test.txt"
val get = "getter"

4.3 修饰符关键字 #

kotlin
// 访问修饰符
public    // 公开
private   // 私有
protected // 保护
internal  // 模块内可见

// 其他修饰符
open      // 可继承/可重写
final     // 不可继承/不可重写
abstract  // 抽象
override  // 重写
lateinit  // 延迟初始化
sealed    // 密封类
data      // 数据类
enum      // 枚举类
inline    // 内联函数
suspend   // 挂起函数

五、代码块与作用域 #

5.1 代码块 #

使用 {} 定义代码块:

kotlin
fun main() {
    // 函数体代码块
    val a = 10
    
    // 局部代码块
    {
        val b = 20
        println("a + b = ${a + b}")
    }
    
    // println(b)  // 错误:b 不可见
}

5.2 作用域 #

kotlin
val globalVar = 100  // 全局变量

fun example() {
    val localVar = 200  // 局部变量
    
    if (true) {
        val blockVar = 300  // 块级变量
        println(globalVar)   // 可访问
        println(localVar)    // 可访问
        println(blockVar)    // 可访问
    }
    
    // println(blockVar)  // 错误:不可访问
}

5.3 变量遮蔽 #

kotlin
val count = 100

fun test() {
    val count = 200  // 遮蔽外部变量
    println(count)   // 输出 200
    
    if (true) {
        val count = 300  // 遮蔽函数级变量
        println(count)   // 输出 300
    }
    
    println(count)   // 输出 200
}

六、表达式与语句 #

6.1 表达式 #

表达式是有返回值的代码:

kotlin
// 字面量表达式
10
"Hello"
true

// 算术表达式
1 + 2
a * b

// 比较表达式
a > b
x == y

// 函数调用表达式
calculate(1, 2)
list.size

// Lambda 表达式
{ x: Int -> x * 2 }

6.2 语句 #

语句是执行操作的代码:

kotlin
// 赋值语句
val x = 10

// 表达式语句
println("Hello")

// 控制流语句
if (x > 0) { ... }
for (i in 1..10) { ... }

6.3 表达式体函数 #

kotlin
// 普通函数
fun add(a: Int, b: Int): Int {
    return a + b
}

// 表达式体函数
fun add(a: Int, b: Int) = a + b

七、分号 #

7.1 分号可选 #

Kotlin 中分号是可选的:

kotlin
// 不需要分号
val name = "Kotlin"
println(name)

// 可以加分号(不推荐)
val age = 10;
println(age);

7.2 必须使用分号的情况 #

同一行有多个语句时需要分号:

kotlin
val a = 10; val b = 20; println(a + b)

八、代码规范 #

8.1 缩进 #

使用 4 个空格缩进:

kotlin
fun main() {
    if (true) {
        println("Hello")
    }
}

8.2 大括号 #

左大括号放在行尾:

kotlin
// 推荐
if (condition) {
    doSomething()
}

// 不推荐
if (condition)
{
    doSomething()
}

8.3 空行 #

kotlin
package com.example

import java.util.*

class Person {
    var name: String = ""
    var age: Int = 0
    
    fun greet(): String {
        return "Hello, $name"
    }
}

fun main() {
    val person = Person()
    person.name = "Kotlin"
    
    println(person.greet())
}

8.4 行长度 #

建议每行不超过 100-120 个字符:

kotlin
// 过长的行可以换行
val result = veryLongFunctionName(
    firstArgument,
    secondArgument,
    thirdArgument
)

// 链式调用换行
val filteredList = list
    .filter { it > 0 }
    .map { it * 2 }
    .sorted()

8.5 函数参数 #

kotlin
// 参数较少时单行
fun add(a: Int, b: Int): Int = a + b

// 参数较多时换行
fun createPerson(
    name: String,
    age: Int,
    address: String,
    phone: String
): Person {
    return Person(name, age, address, phone)
}

九、常见错误 #

9.1 忘记赋值 #

kotlin
// 错误:变量声明后必须初始化
val name: String
name = "Kotlin"  // 错误

// 正确
val name: String = "Kotlin"

9.2 类型不匹配 #

kotlin
// 错误:类型不匹配
val age: Int = "25"  // 错误

// 正确
val age: Int = 25

9.3 重复定义 #

kotlin
// 错误:重复定义
val x = 10
val x = 20  // 错误

十、总结 #

Kotlin 基础语法要点:

  1. 包和导入:组织代码结构
  2. 注释:单行、多行、文档注释
  3. 标识符:遵循命名规则和约定
  4. 关键字:区分硬关键字和软关键字
  5. 代码规范:保持代码整洁可读

下一步,让我们学习 变量与常量

最后更新:2026-03-27