一.简单分支
可去掉大括号
var flag: Boolean = true;
if (flag)
System.out.println("flag is true")
else
System.out.println("flag is false")
可赋值给变量
var flag: Boolean = true;
var result = if (flag)
2
else
3
二.多路分支
var variety :String = "哺乳类"
var result :String
when (variety) {
"鸟类" -> result = "麻雀"
"爬行类" -> result = "鳄鱼"
"哺乳类" -> result = "熊猫"
else -> result = "人类"
}
以上是Kotlin的多路分支,其变化有
1.关键字switch被when替代
2.case 常量 被 常量 ->代替
3.break被取消,默认跳出
4.default 变为else
其扩展功能有
var number :Int = 3;
var out:Int = when (number) {
1,2,3,4 -> 0
in 5..8 -> 2
!in 15..20 -> 3
else -> 1
}
println(out)
","可支持多种变量值统一处理,in和!in支持变量的浮动区域
类型判断instanceof在Kotlin中用is判断
if (variety is String) {
println("variety is String ")
}
也可以用多路分支来判断
var number: Number = 3;
when (number) {
is Long -> 0
is Double -> 2
is Float -> 3
else -> 1
}
三.循环语句
Kotlin中while和do while和java一样,取消了for(初始;条件;增减)语法,for的两种方式遍历方式如下
var flowers: Array<String> = arrayOf("牡丹", "月季", "玫瑰")
for (flower in flowers) {
println(flower)
}
for (i in flowers.indices) {
println(flowers[i])
}
对for的进一步操作,如下
var flowers: Array<String> = arrayOf("牡丹", "月季", "玫瑰","荷花","菊花","兰花","水仙")
// 0到2,不包括2
for (i in 0 until 2) {
print(flowers[i])
}
//2到6,包括6,每次step自增2
for (i in 2..6) {
print(flowers[i])
}
//递减从6到3
for(i in 6 downTo 3){
print(flowers[i])
}
continue和break和java一样,不过多了多重循环跳出功能
outside@ for (i in 0 until 7) {
for (j in 0 until 4) {
if (i == 3 && j == 2) {
break@outside
}
println("i = " + i + " j = " + j)
}
}
break@标记,跳出有标记的循环语句外
四.空安全
对字符串有以下检验空安全的方法
isNullOrEmpty 空指针或者字符串长度为0返回true,非空串和可空串可调用
isNullOrBlank 空指针.字符串长度为0或者全为空格返回true,非空串和可空串可调用
isEmpty 字符串长度为0返回true,非空串调用
isBlank 字符串长度为0或者空格返回true,非空串调用
isNotEmpty 字符串长度大于0返回true,非空串调用
isNotBlank 字符串长度大于0且不是全空格返回true,非空串调用
var strNotNull:String = ”“ 这种方式不允许为空指针
var strCanNull:String? 这种方式可允许为空指针
//字符串后缀加了?,表示str可为空
var str: String? = "hello world"
//如果str为null,则返回null,不报空指针异常
val len1 = str?.length;
//后面加入?:,表示为null,返回后面的数据
val len2 = str?.length ?: 0;
//!!表示开发者认定str不可能为null
val len3 = str!!.length;
五.等式判断
结构相等,判断其皮囊是否相等,用==和!=
引用相等,判断其地址是一只的,用===和!==