Kotlin学习笔记四

    xiaoxiao2023-10-12  151

                                                 控制语句

     

    1.条件分支

    简单分支

    首先“if……else……"的条件使用规则和java中的用法是一样的。

    我们在Kotlin中给某个文本赋值的时候可以直接用该语句进行赋值

    eg:                  tv.text = if(is_odd==true)"正确情况下的赋值是正值1"else"错误情况下的赋值时-1"

    可以直接这么赋值,代码量似乎又减少了一点。

    多路分支

    在多路分支的时候,我们在Java中会用switch/case的方式进行反复的判断来进行一些相关的逻辑操作,在Kotlin中我们不再用这种方式了,我们用一种新的方式when/else的方式来控制

    eg:                           var count:Int =0

                               when(count){

                              0      ->  tv.text="这是count为0d的时候的的赋值"

                              1     ->  tv.text="这是count为1的时候的赋值情况"

                              else -> tv.text="这是count为其他的情况的赋值

    }

                            count=(count+1)%3

    从上面的语句我们可以看出,when/else省略了switch/case的break语句,还有default语句,直接使用else代替default.

       如果五个常量都要进入同一个分支当中,只需要用逗号隔开他们即可。如果几个常量刚好是连续的几个数字,可以使用

    ”in 开始值..结束值“,若不在某个范围内,使用”!in 开始值...结束值“

    eg:                          var count:Int =0;

                                     tv.text=when(count){

                                   1,3,5,7,9 ->"这是1,3,5,7,9 时候的赋值"

                                  in 13...19     ->"这是13到19连续数字的赋值"

                                 !in 6...10    ->"这是不是6到10连续的数字的赋值"

                                 else             -> "其他情况下的赋值情况"

                        }

                                count =(count+1)

     

    类型判断

    在java中使用类型判断的时候,我们用instancesof,然而在Kotlin中我们需要知道某个类型的话,使用is就用

     

    2循环处理

    遍历循环

    java中的遍历,做android开发的小伙伴们应该都在熟记于心了,那么在Kolin中的循环遍历和其还是有很大区别的。

    eg:         

                   val girlDes : Array<String> = arrayOf("小姐姐","穿上超短裙","真的很漂亮","真的很性感")

                  var des :String =""

                   for(item in girlDes ){

                   des ="$des $item,\n"

    }

                tv.text = des

    还有一种方式:根据数组的下标找取元素

    val girlDes : Array<String> = arrayOf("小姐姐","穿上超短裙","真的很漂亮","真的很性感")

                      for(i in girlDes.indices){

                   var des :String =""

                 if(i%2 ==0){

                      des ="$des ${girlDes [i],\n}"

    }else{

                   des  = "$des ${girlDes [i],\n}"

    }

           tv.text = des 

    条件循环

    Kotlin 的for(i in 数组变量:.indices)无法很好的处理一些情况:Kotlin提供了诸如until    step    downTo这样的关键字

                1)如何设定条件判断的其实值和终止值

                2)每次循环之后的递增值不是1的情况

                3)循环方向不是递增而是递减

                4)与条件判断有关的变量不止一个

                5)循环过程中的变量

     

    // 左闭又开区间,合法值包括11但是不包括66

    for(i in 11 until 66){...}

    //每次默认递增1,这里改为每次递增4

    for(i in 23...89 step){}

    //for循环默认递增,这里使用downTo表示递减

    for (i in 50 downTo 7){}

     

    跳出多重循环

    Kotlin中使用@标记来跳出循环,而不用java中break

    eg:

    var i:Int =0

    var is_found = false

    val girlDes : Array<String> = arrayOf("小姐姐","穿上超短裙","真的很漂亮","真的很性感")

    outSide@ while(i<girlDes .size){

    var j:Int =0

    var item  =girlDes [i]

    while(j<item.length){

    if(item[j]=='一'){

     is_found=true

    //发现情况直接跳出循环

    break@outSide

    }

    j++

    }

    }

     

    3 空安全

    Kotlin中提供的一些方法判断:

    1)isNullOrEmpty:判空返回true,f否则为false

    2)isNullOrBlank:空指针,字符串长度为0,或者全为空格时返回true

    3)isEmpty:字符串长度为0时返回true,只有非空字符串才可以调用

    4)isNotEmpty:字符串长度大于0时返回true,只有非空字符串才可以调用

    5)isNotBlank:字符串长度大于0且不是全空格串返回true,只有非空字符串才可以调用

    6)isBlank:字符串长度为0或者全为空格时返回true,只有非空字符串草可以调用

    申明可变变量

    非空字符串要么在声明的时候就赋值,要么就下调用前赋值,否则会提示赋值,正常申明的字符串都是非空的。

    1.            var str:String?

    2.            var arrayTest:Array<String?>

     

    检验空值的运算符

            eg: 

            var str_B:String

            var length_test :Int?

            length_test = str_B?.length

            tv.text = "使用?.得到的字符串长度为$length_test"

    以上的?.表示的是变量为空的时候返回null,所以返回的变量必须是可控的类型

     

    新的运算符​​​​​​​"?:"

    这个运算符相当于java中的三元运算符

    eg:        leng = strB?.length?:-1                   //表示的是为空的时候就返回右边的值(感觉好麻烦的样子啊)

     

    新的运算符"!!"

    表示的是强行的把该变量从可空类型转变为非空类型,不做检查,如果运行的时候有空,抛出异常

    eg :     length= strB!!.length

     

    4等式判断

    字符串的等值性判断要求Java的判断方式Kotlin d的判断方式判断两个字符串是否相等staA.equals(StrB)strA==strB判断两个字符串是否不等!staA.equals(StrB)strA!=strB

      Kotlin 判断引用是否相等使用三个等号"==="         意思为不仅结构相等而且地址都要相等

     

    新运算符 "is"和"in"

    java中判断类型名称是用的是instanceof

    kotlin中判断类型是否相等用is

    in这个运算符判断的是数组中是否存在某个元素通过”变量名 in 数组名“判断是否存在等值元素,使用起来也很方便

     

    最新回复(0)