一、Hello World
按照国际惯例,学习一门新的语言通常都是要从打印 Hello World 开始的
package main
fun main() {
val msg: String = "Hello World"
println(msg)
}
- 1
- 2
- 3
- 4
- 5
- 6
从这个简单的函数就可以列出 kotlin 和 Java 的几个不同点
- 函数可以定义在文件的最外层,不需要把它放在类中
- 用关键字 fun 来声明一个函数
- 可以省略
main
方法的参数 - 参数类型写在变量名之后,这有助于在类型自动推导时省略类型声明
- 使用
println
代替了System.out.println
,这是 kotlin 标准库提供的对 Java 标准库函数的简易封装 - 可以省略代码结尾的分号
二、Package
kotlin 文件都以 package 开头,同个文件中定义的所有声明(类、函数和属性)都会被放到这个包中。同个包中的声明可以直接使用,不同包的声明需要导入后使用
包的声明要放在文件顶部,import 语句紧随其后
package base
import java.text.SimpleDateFormat
import java.util.*
- 1
- 2
- 3
- 4
kotlin 不区分导入的是类还是函数,可以使用 import
关键字导入任何种类的声明。此外也可以在包名称后加上 .* 来导入包中定义的所有声明,从而让包中定义的类、顶层函数、和属性都可以直接引用
package learn.package2
val index = 10
fun Test(status: Boolean) = println(status)
class Point(val x: Int, val y: Int) {
val isEquals1: Boolean
get() {
return x == y
}
val isEquals2
get() = x == y
var isEquals3 = false
get() = x > y
set(value) {
field = !value
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
package learn.package1
import learn.package2.Point
import learn.package2.Test
import learn.package2.index
fun main() {
val point = Point(10, index)
Test(true)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java 语言规定类要放到和包结构匹配的文件夹目录结构中,且文件名必须和类名相同。而 kotlin 允许把多个类放到同一个文件中,文件名也可以任意选择。kotlin 也没有文件夹目录施加任何限制,包层级结构不需要遵循同样的目录层级结构 ,但 kotlin 官方还是建议根据包声明把源码文件放到相应的目录中
如果包名出现命名冲突,可以使用 as 关键字在本地重命名冲突项来消歧义