Kotlin 基础语法入门教程

4 阅读2分钟

本教程将带你了解 Kotlin 编程语言的核心语法。每节内容都配有简单易懂的中文说明和全新的代码示例。

1. 包的定义与导入

在 Kotlin 中,package 声明通常位于源文件的最顶部,用于组织代码。导入其他包的类或函数使用 import。

package com.example.learnkotlin

import kotlin.math.PI
import kotlin.text.*  // 导入整个包

fun main() {
  println("圆周率的值是:$PI")
}

注意:Kotlin 不要求目录结构与包名一致,但推荐保持一致以便维护。

2. 程序入口点:main 函数

Kotlin 程序从 main 函数开始执行。

fun main() {
  println("欢迎学习 Kotlin!")
}

如果需要接收命令行参数:

fun main(args: Array) {
  println("传入的参数有:${args.joinToString()}")
}

3. 标准输出

• print():输出内容,不换行。

• println():输出内容后换行。

fun main() {
  print("Kotlin ")
  print("很简单")
  println("!")   // 换行
  println("学习愉快")
}

输出:

Kotlin 很简单!

学习愉快

4. 从标准输入读取

readln() 函数用于从控制台读取用户输入的一行字符串。

fun main() {
  println("请输入你的名字:")
  val name = readln()
  println("你好,$name!")
}

5. 函数定义

带返回值的函数

fun multiply(a: Int, b: Int): Int {
  return a * b
}

fun main() {
  println("5 × 6 = ${multiply(5, 6)}"
}

表达式体函数(可省略返回类型)

fun divide(a: Double, b: Double) = a / b

fun main() {
  println("10 ÷ 4 = ${divide(10.0, 4.0)}")
}

无返回值函数(Unit 可省略)

fun greet(name: String) {
  println("你好,$name!")
}

fun main() {
  greet("李明")
}

6. 变量:val 与 var

• val:只读变量(不可变),赋值一次后不能再改。

• var:可变变量。

fun main() {
  val birthYear = 1995   // 不可变
  var age = 29           // 可变
  age += 1
  println("出生年份:$birthYear,年龄:$age")
}

Kotlin 支持类型推断,也可以显式声明类型:

fun main() {
  val city: String = "北京"
  var population: Long = 21540000
  population = 21850000
  println("$city 人口约 $population")
}

7. 类与实例

使用 class 定义类。主构造函数直接写在类名后。

class Student(val name: String, var score: Int)

fun main() {
  val s = Student("王芳", 88)
  println("${s.name} 的成绩是 ${s.score}")
  s.score = 92
  println("更新后:${s.name} 的成绩是 ${s.score}")
}

继承使用 :,父类需要标记 open。

open class Animal(val name: String)

class Dog(name: String, val breed: String) : Animal(name)

fun main() {
  val dog = Dog("小黑", "柴犬")
  println("${dog.name} 是一只 ${dog.breed}")
}

8. 注释

Kotlin 支持单行注释和嵌套的多行注释。

// 这是单行注释

/*
 这是多行注释
 /* 可以嵌套 */
   注释结束
*/

9. 字符串模板

可以在字符串中使用 引用变量或引用变量或{表达式}。

fun main() {
  val name = "李华"
  val score = 95
  println("学生:$name,成绩:${score + 5}(含加分)")
}

10. 条件表达式:if

if 可以作为表达式返回值。

fun maxNumber(a: Int, b: Int) = if (a > b) a else b

fun main() {
  println("较大值是:${maxNumber(12, 7)}")
}

11. for 循环

fun main() {
  val fruits = listOf("苹果", "香蕉", "樱桃")

  for (fruit in fruits) {
    println("我喜欢吃 $fruit")
  }

  for (i in fruits.indices) {
    println("第 ${i + 1} 个水果是 ${fruits[i]}")
  }
}

12. while 循环

fun main() {
  var count = 3
  while (count > 0) {
    println("倒计时:$count")
    count--
  }
  println("开始!")
}

13. when 表达式

when 类似于其他语言的 switch,但更强大。

fun getSeason(month: Int): String = when (month) {
  12, 1, 2 -> "冬季"
  3, 4, 5 -> "春季"
  6, 7, 8 -> "夏季"
  9, 10, 11 -> "秋季"
  else -> "无效月份"
}

fun main() {
  println("5月是:${getSeason(5)}")
}

14. 区间(Range)

使用 .. 创建区间,in 检查是否包含。

fun main() {
  val age = 18
  if (age in 1..17) {
      println("未成年人")
  } else if (age in 18..100) {
      println("成年人")
  }

  for (x in 1..5 step 2) {
      print("$x ")  // 输出:1 3 5
  }
}

15. 集合操作

fun main() {
  val words = listOf("kotlin", "java", "python", "swift")
  words.filter { it.startsWith("p") }
       .map { it.uppercase() }
       .forEach { println(it) }  // 输出:PYTHON
}

16. 空值与空安全

类型后加 ? 表示可空。使用前必须检查是否 null。

fun toIntOrNull(s: String): Int? {
  return s.toIntOrNull()
} 

fun main() {
  val a = toIntOrNull("123")
  val b = toIntOrNull("abc")

  if (a != null && b != null) {
      println(a + b)
  } else {
      println("转换失败")
  }
}

17. 类型检测与自动转换

is 用于类型检测,检测后自动转换类型。

fun printLength(obj: Any) {
  if (obj is String) {
      // obj 自动转为 String
      println("字符串长度:${obj.length}")
  } else {
      println("不是字符串")
  }
}

fun main() {
  printLength("Hello Kotlin")
  printLength(123)
}

总结

你已经学习了 Kotlin 的以下基础语法:

• 包、入口函数、输入输出

• 函数定义、变量、类与继承

• 控制流(if、for、while、when)

• 区间、集合、空安全、类型检测

继续练习和阅读Kotlin教程,你会更快掌握 Kotlin 编程。祝你学习顺利!