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 基础语法要点:
- 包和导入:组织代码结构
- 注释:单行、多行、文档注释
- 标识符:遵循命名规则和约定
- 关键字:区分硬关键字和软关键字
- 代码规范:保持代码整洁可读
下一步,让我们学习 变量与常量!
最后更新:2026-03-27