-----笨笨的Kotlin是根据《Kotlin从零到精通 Android开发》一书为基础,做自己的读书笔记和精简书中的类容-----
2.控制语句
2.1条件分支
2.1.1单路分支
if...else...的操作,有点类似三次元运算符。可以返回值,没啥好说的。所以java的三元运算符被取消掉了。
2.1.2多路分支
switch...case被修改成when..else,case 被 “常量/变量->”代替,而且不再需要break,默认只处理一条。
而且还有一个有意思的扩充
就是关于在“常量/变量->”的判定中,如果常量的判定是好几个,可以用逗号隔开,如果是范围判定的话,可以使用“in 开始值..结束值”指定区域,如果不在这个区域 !in 这样就可以了
2.1.3类型判断
java中的instanceof被is关键字代替。同时when...else也支持类型的判断,大概变成这样“is Int ->”
补充一个点,在kotlin中,有个关键字就是Number分别可以代替Long,Double,Float等类型。
2.2循环处理
2.2.1遍历
在kotlin取消掉了for(,,)三个参数的做法,取而代之的是之前提过的for(i in listarray.indices)
2.2.2条件
for(,,)三个参数的做法,取消掉之后,付出的代价总结如下:
1.如何设定条件判断的起始和终止值
2.每次循环递增的值不是1
3.循环方向的判定
4.与条件判断有关的变量不止一个
5.循环过程中的变量,是否还可以适用。
针对上面的一些问题,出现了几个关键字,until,step,downTO
fun for3var(){
//从11开始遍历到66 包括11不包括66
for(i in 11 until 66){ }
//每次递增4
for(i in 23..89 step 4){ }
//递减
for(i in 50 downTo 7){ }
}
用起来起始还是怪麻烦的,可以换一种方法。用while循环
fun whileTest(){
var poem : String = "";
var i : Int = 0;
var poemArray : MutableList<String> = mutableListOf("how","do","hyou");
while(i < poemArray.size){
if(i%2 == 0){
}else{
}
i++;
}
}
相对的 还有do..while
do{
if(i%2 == 0){
}else{
}
i++;
}while(i < poemArray.size)
2.2.3跳出循环
关键字符continue和break的操作依旧保留。只是做出了一个有趣的改进,就是跳出的层级有了改善。
假设像过去的,拥有两层for循环,现在是两层的while循环,内层判断结束需要直接跳出双层循环,就要break,break。
kotlin在这方面做了个骚操作。
fun jumpFor(){
var poemArray : MutableList<String> = mutableListOf("how","do","hyou");
var i : Int = 0;
var is_found = false;
outside@ while(i < poemArray.size){
var j = 0;
var item = poemArray[i];
while(j < item.length){
if(item[j] == 'w'){
is_found = true;
break@outside;
}
j++;
}
if(is_found)
break;
i ++;
}
}
2.3空安全
2.3.1字符串空安全判定
函数 | 解释 |
isNullOrEmpty | 空指针和子串长度为0 |
isNullOrBlank | 空指针和子串长度为0,加一个全为空格 |
isBlank | 子串长度为0,加一个全为空格 |
isEmpty | 子串长度为0 |
isNotEmpty | 子串长度大于0 |
isNotBlank | 子串长度大于0且不是全空格串 |
2.3.2声明可空变量
使用特殊符号?即可。
特殊的几个符号
符号 | 备注 |
? | 可null |
?. | 判断为空的话返回null |
?: | 为null的话取值 |
!! | 把可空类型强制变成非空类型 |
2.4等式判断
2.4.1结构判断
字符串等值判断要求 | Java的判断 | Kotlin的判断 |
判断两个字符串是否相等 | A.equals(B) | A==B |
判断两个字符串是否不等 | !A.equals(B) | A!=B |
结构相等和引用相等 |
| A===B |
结构相等和引用不相等 |
| A!==B |
2.4.3 is和in
is相当于instanceof 这个不说了
来说一下in.判断数组中是否存在该元素的操作。
-----用例代码分享在Github.有兴趣的小伙伴可以去直接看.-----
https://github.com/BXHero/KotlinStudy
===有不对的地方欢迎留言和讨论===