省略語句后的分號(hào)
var foo = 1
val bar = "bar"
對(duì)常用函數(shù)的封裝
print(xxx) //相當(dāng)于 System.out.print
println(xxx) //相當(dāng)于 System.out.println
函數(shù)聲明和返回值的簡(jiǎn)化
fun functionName()
fun functionName(){}
fun functionName(): Int{
return 0
}
fun functionName(): Int = 0
常用結(jié)構(gòu)的簡(jiǎn)化
在 Java
中若要新建一個(gè)實(shí)體類役纹,常常需要寫 constructor
, setter/getter
和覆寫 toString()
暇唾, 但在 Kotlin
中促脉,一句代碼就可以搞定:
data class EasyPojo(var id: Int, var name: String)
其中辰斋,data
關(guān)鍵詞會(huì)優(yōu)化 toString()
方法使其返回友好的字符串;也可將其去掉瘸味,但 toString()
會(huì)返回 類名@[hashcode]
宫仗。
但是這樣子建立的實(shí)體類,其成員變量是 public
的旁仿,可以繞過 setter/getter
直接進(jìn)行賦值或訪問藕夫。
λ 表達(dá)式
有一個(gè)如下的接口:
public interface ICallback {
void run();
}
在 Java8
中,實(shí)例化一個(gè)實(shí)現(xiàn)該接口的匿名類時(shí)枯冈,可以簡(jiǎn)化為:
ICallback callback = () -> System.out.print("this is an method in an interface");
同樣汁胆,在 Kotlin
中,可以將代碼簡(jiǎn)化為:
val callback = ICallback { println("this is an method in an interface") }
when 語句
Kotlin
引入的 when
語句實(shí)在解決了很多語言中 switch/case
語句的痛點(diǎn)霜幼,可以合并不同的結(jié)果嫩码,而且不用重復(fù)地寫 break
。
when (x) {
0 -> println("this is House Stark")
1, 2 -> println("this is House Lannister")
3, 5 -> println("this is House Baratheon")
else -> println("this is House Targaryen")
}
另外罪既,when
語句還可以作為一個(gè)表達(dá)式來返回?cái)?shù)值铸题。
val x: String? = null
val y = 5
val z = true
val who = when {
x is String -> "Tyrion"
y in 1..10 -> "Jon"
z -> "Daenerys"
else -> "No one"
}
if 語句
跟 when
語句類似,if
語句也可以作為一個(gè)表達(dá)式來使用琢感。
val x = 5
var y = if (x in 1..9) "null" else "not null"
Sum up
以上就是我目前接觸到的丢间,Kotlin
相對(duì)于 Java
顯得簡(jiǎn)潔的地方。如果你有更好的內(nèi)容驹针,歡迎補(bǔ)充烘挫。