下面是一个全面的 Kotlin 语言入门教程,适合初学者和有一定编程经验的人士。Kotlin 是一种静态类型的编程语言,由 JetBrains 开发,旨在为 JVM、Android 和浏览器提供更好的开发体验。Kotlin 以其简洁性、安全性和互操作性而闻名。另外这里也为大家准备了一些参考资料:kotlin语言基础到安卓开发精通。
Kotlin 的主要特点包括:
使用 IntelliJ IDEA:
命令行工具:
# 使用 SDKMAN! 安装 Kotlin
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install kotlin
验证安装:
kotlinc -version
info: kotlinc-jvm 1.5.30
的版本号。让我们从一个简单的“Hello, World!”程序开始。
创建文件:
Hello.kt
的文件,并在其中输入以下内容:fun main() {
println("Hello, World!")
}
运行程序:
Hello.kt
文件的目录,然后运行以下命令:kotlinc Hello.kt -include-runtime -d Hello.jar
java -jar Hello.jar
Hello, World!
。//
符号。/* ... */
包围。// 这是单行注释
/*
这是多行注释
可以跨越多行
*/
val
声明不可变变量(类似于 Java 的 final
)。var
声明可变变量。val name: String = "Alice"
var age: Int = 30
age = 31 // 可以修改
Int
, Double
, Boolean
, Char
等。Array
, List
, Set
, Map
等。val number: Int = 10
val pi: Double = 3.14
val isStudent: Boolean = true
val firstLetter: Char = 'A'
val numbers: Array<Int> = arrayOf(1, 2, 3)
val list: List<String> = listOf("Apple", "Banana", "Cherry")
val set: Set<String> = setOf("Apple", "Banana", "Cherry")
val map: Map<String, Int> = mapOf("Apple" to 1, "Banana" to 2, "Cherry" to 3)
$
符号进行插值。val name = "Alice"
val greeting = "Hello, $name!" // 输出: Hello, Alice!
val multiLine = """
This is a
multi-line string.
"""
length
, toUpperCase
, toLowerCase
, split
等。val str = "Hello, Kotlin"
println(str.length) // 输出: 13
println(str.toUpperCase()) // 输出: HELLO, KOTLIN
println(str.toLowerCase()) // 输出: hello, kotlin
println(str.split(", ")) // 输出: [Hello, Kotlin]
if
语句val age = 18
if (age >= 18) {
println("You are an adult.")
} else if (age >= 13) {
println("You are a teenager.")
} else {
println("You are a child.")
}
when
语句val day = "Monday"
when (day) {
"Monday" -> println("It's Monday")
"Tuesday", "Wednesday" -> println("It's midweek")
else -> println("It's the weekend")
}
for
循环for (i in 1..5) {
println(i)
}
while
循环var i = 1
while (i <= 5) {
println(i)
i++
}
do-while
循环var j = 1
do {
println(j)
j++
} while (j <= 5)
fun
关键字定义函数。fun greet(name: String): String {
return "Hello, $name!"
}
println(greet("Alice")) // 输出: Hello, Alice!
return
关键字返回值,默认返回最后一个表达式的值。fun add(a: Int, b: Int): Int {
return a + b
}
val result = add(3, 4)
println(result) // 输出: 7
fun multiply(a: Int, b: Int) = a * b
val product = multiply(3, 4)
println(product) // 输出: 12
class
关键字定义类。class Person(val name: String, var age: Int) {
fun introduce(): String {
return "My name is $name and I am $age years old."
}
}
new
关键字创建对象(通常省略 new
)。val person = Person("Alice", 30)
println(person.introduce()) // 输出: My name is Alice and I am 30 years old.
:
符号实现继承。open class Animal(val name: String) {
open fun makeSound() {
println("Some generic animal sound")
}
}
class Dog(name: String) : Animal(name) {
override fun makeSound() {
println("Woof!")
}
}
val dog = Dog("Buddy")
dog.makeSound() // 输出: Woof!
interface
关键字定义接口。interface Animal {
val name: String
fun makeSound()
}
class Cat(override val name: String) : Animal {
override fun makeSound() {
println("Meow!")
}
}
val cat = Cat("Whiskers")
cat.makeSound() // 输出: Meow!
enum class
关键字定义枚举。enum class Color {
RED, GREEN, BLUE
}
fun printColor(color: Color) {
when (color) {
Color.RED -> println("Red")
Color.GREEN -> println("Green")
Color.BLUE -> println("Blue")
}
}
printColor(Color.GREEN) // 输出: Green
listOf
创建只读列表。mutableListOf
创建可变列表。val readOnlyList: List<String> = listOf("Apple", "Banana", "Cherry")
val mutableList: MutableList<String> = mutableListOf("Apple", "Banana", "Cherry")
mutableList.add("Date")
println(mutableList) // 输出: [Apple, Banana, Cherry, Date]
setOf
创建只读集合。mutableSetOf
创建可变集合。val readOnlySet: Set<String> = setOf("Apple", "Banana", "Cherry")
val mutableSet: MutableSet<String> = mutableSetOf("Apple", "Banana", "Cherry")
mutableSet.add("Date")
println(mutableSet) // 输出: [Apple, Banana, Cherry, Date]
mapOf
创建只读映射。mutableMapOf
创建可变映射。val readOnlyMap: Map<String, Int> = mapOf("Apple" to 1, "Banana" to 2, "Cherry" to 3)
val mutableMap: MutableMap<String, Int> = mutableMapOf("Apple" to 1, "Banana" to 2, "Cherry" to 3)
mutableMap["Date"] = 4
println(mutableMap) // 输出: {Apple=1, Banana=2, Cherry=3, Date=4}
try-catch-finally
结构fun divide(a: Int, b: Int): Int {
try {
return a / b
} catch (e: ArithmeticException) {
println("Cannot divide by zero")
return 0
} finally {
println("This will always run")
}
}
val result = divide(10, 0)
println(result) // 输出: Cannot divide by zero
// 输出: This will always run
// 输出: 0
Kotlin 提供了丰富的标准库,涵盖了各种功能。一些常用的库包括:
为了更好地理解 Kotlin 的应用,你可以尝试构建一些简单的项目,例如:
khttp
库抓取网页内容。以上是 Kotlin 语言的一个全面的基础教程,涵盖了从基本语法到高级功能的各个方面。通过这些基础知识,你可以开始编写简单的 Kotlin 程序,并进一步探索更复杂的功能和创意。如果你希望深入学习,可以参考上述的教学资源,并通过实际项目来练习 Kotlin 技能。