kotlin入门(一)
kotlin入门(二)
kotlin入门(三)
var与val
var 表示该变量是可修改的变量;
val 表示该变量是不可修改的变量;
例如:
var a: String = "hello"
a = "world" //不会报错
val b: String = "hello"
b = "world" //编译器报错
kotlin的Null安全性
如果想声明一个String类型的变量, 默认值为null:
var a : String = null //编译器报错
var b : String ?= null //不会报错
一个返回类型为String, 绝对不会返回null的函数:
fun testMethod():String{
return "111";
}
一个返回类型为String, 可能会返回null的函数:
fun testMethod():String?{
return null;
}
"?."与"?:"
请仔细观察以下代码, 猜测其运行结果:
var a: String? = "hello"
a?.let {
println("a is not null")
}
println(a?.length ?: "a is null")
a = null
a ?: println("now a is null ")
println(a?.length ?: "a is null")
println( if(a!=null) "a!=null" else "a is null")
以下是实际运行结果. 你猜到"?."和"?:"的区别了吗?
a is not null
5
now a is null
a is null
a is null
需要注意的是, kotlin里的"?:"不能再用作条件运算符. 如下:
var c:Boolean=true
var d = c ?"c is true":"c is false" //编译器报错
var e = if(c) "c is true" else "c is false" //正确的写法
几个函数的例子:
判断String是否为null:
fun isStringNull(str: String?): Boolean {
str ?: return true
return false
}
另一种写法:
fun isStringNull(str: String?): Boolean {
return str?.let { false } ?: true;
}
判断多个String变量是否有null值:
fun hasNull(vararg strArray: String?): Boolean {
for (str in strArray) {
str ?: return true
}
return false
}
将为null的变量替换成一个默认值:
fun replaceNullString(name: String?): String{
return name ?: "unknow"
}