Kotlin 入门第二天:变量、?判空、区间 及类型转换
变量
可变变量
var name: String = “”
不可变变量
val name: String = “123”
? 判空逻辑
var age: String? = “23” //变量name可以为空
/抛出空指针异常/
val ages = age!!.toInt()
/*? 表示不作处理,返回null*/
var ages1 = age?.toInt()
/*第一个?表示空不处理,第二个表示空的话,返回-1
* 最终表示,如果age为空,则age2为-1/
var ages2 = age?.toInt() ? : -1
类型检测及自动转换
/**类型检测及自动类型转换*/
fun getStringLength(obj: Any): Int? {
if (obj is String) {
//做过类型判断以后,obj会被系统自动转换为String类型
return obj.length
}
//这里obj仍是Any类型的引用
return null;
}
初次之外,类型转换还有以下两种特点
fun getStringLength2(obj: Any): Int? {
if (obj !is String) {
return null
}
// 在这个分支中, `obj` 的类型会被自动转换为 `String`
return obj.length
}
fun getStringLength3(obj: Any): Int? {
// 在 `&&` 运算符的右侧, `obj` 的类型会被自动转换为 `String`
if (obj is String && obj.length > 0)
return obj.length
return null
}
区间
for (i in 1…4 ) print(i) //输出1234
for (i in 4…1) print(i) //什么都不输出
var i: Int = 8
if (i in 1…10) {
print(i)
}
Step的使用
for (i in 1..4 step 2) print(i)
使用 until 函数排除结束元素
/**使用 until 函数排除结束元素*/
for (i in 1 until 10) {
// i in [1, 10)
print(i)
}