變數(shù)(variable)
1.不可改變的變數(shù)
val 變數(shù)名稱: 型態(tài) = 初始值
2.可以改變的變數(shù)
var 變數(shù)名稱: 型態(tài) = 初始值
example:
val x: Int = 3 // 使用val宣告不可改變的變數(shù)
val y = 5 // 使用設(shè)定值推論變數(shù)型態(tài)
val z: Int // 沒有設(shè)定值的變數(shù)就一定要指定型態(tài)
z = 7 // 設(shè)定值以後就不可以改變
println("X: " + x)
println("Y: " + y)
println("Z: " + z)
// 下面的敘述都會(huì)造成錯(cuò)誤: Val cannot be reassigned
/*
x = 13
y = 15
z = 17
*/
var v: Int = 3 // 使用var宣告可以改變的變數(shù)
v = 13 // 不會(huì)發(fā)生錯(cuò)誤
println("V: " + v)
方法
預(yù)設(shè)是final, public
加上open 表示 可以被override
fun 函式名稱(參數(shù)名稱: 參數(shù)型態(tài),...): 回傳型態(tài) {
}
定義類別
預(yù)設(shè)是final
加上open 表示 class可以被繼承 (如同Java的一般class )
class className() {
}
NULL SAFETY
可在 compile time 就檢查變數(shù)是否為 null, 用來(lái)避免 NullPointerException (NPE)
? 表示 nullable
default 是 non null
var order : Order? = Order() //order 可為null
println(order?.price) // 10
println(order.price) // compile erorr
order =null
println(order?.price) // 印出null (不會(huì)NPE)
open class Order() {
var price =10
}
OPERATOR OVERLOADING
- a==b -> a.equals(b)
- a in b -> a.contains(b)