1.Package
同Java一樣,定義package
package my.demo
import java.util.*
源文件里所有的內(nèi)容都在文件頭定義的包里,如果文件頭沒有定義包,那么所有內(nèi)容屬于沒有名字的“default” package
package foo.bar
fun baz() {}
class Goo {}
baz的全名叫foo.bar.baz(), Goo的全名為foo.bar.Goo
2.Import
同Java的語法類似,import 可以帶上as取別名
import bar.Bar as bBar
import除了可以引用類,還可以引用
- top level function和properties,
- 單例的方法 和屬性
- 枚舉常量
沒有import static
3.定義函數(shù)
fun sum(a: Int, b: Int): Int {
return a + b
}
如果函數(shù)只有一個表達式可以寫成
fun sum(a: Int, b: Int) = a + b
如果不要返回值,則寫為Unit,或者省略
fun printSum(a: Int, b: Int): Unit {
print(a + b)
}
或者
fun printSum(a: Int, b: Int) {
print(a + b)
}
4.定義局部變量
只讀變量為val修飾,只能被賦值一次,可讀可寫變量用var修飾,不寫type的變量必須被初始化:
val a: Int = 1
val b = 1 // `Int` type is inferred
val c: Int // Type required when no initializer is provided
c = 1 // definite assignment
5.String template
fun main(args: Array<String>) {
if (args.size == 0) return
print("First argument: ${args[0]}")
}
6. 如果一個引用有可能為null,需要在type后加個?,比如以下函數(shù)就有可能返回null
fun parseInt(str: String): Int? {
// ...
}
7其他
for-loop
fun main(args: Array<String>) {
for (arg in args) {
print(arg)
}
}
//或者遍歷index
for (i in args.indices) {
print(args[i])
}
while-loop
fun main(args: Array<String>) {
var i = 0
while (i < args.size) {
print(args[i++])
}
}
range
if (x in 1..y-1) {
print("OK")
}
in可以遍歷collection,也可以檢查元素是否在collection里
for (name in names) {
println(name)
}
if (text in names) { // names.contains(text) is called
print("Yes")
}