码迷,mamicode.com
首页 > 其他好文 > 详细

Kotlin控制语句

时间:2020-09-11 14:21:04      阅读:38      评论:0      收藏:0      [点我收藏+]

标签:没有   des   if语句   ice   ceo   xxx   检测   字符   lambda   

条件分支
  简单分支(if...else...)在java编程的基础用法上进行了强化

        var boolean : Boolean = true;
        //简单分支
        if(boolean){
            st_tv_hello.text = "123"
        }else{
            st_tv_hello.text = "456"
        }
     //在条件语句外层直接对st_tv_hello进行赋值 
        st_tv_hello.text = if(boolean){
            "123"
        }else{
            "456"
        }
     //去除大括号简化代码
        st_tv_hello.text = if(boolean) "123"  else "456"

  多路分支(switch/case功能扩充成为when/else)使用lambda表达式,简单分支有的它都有,它的判断内容不仅可以是常量,也可以是变量,还可以是区间

       var count : Int = 0;
       when (count){
            0 -> st_tv_hello.text = "123";
            1 ->  st_tv_hello.text = "456";
            else ->  st_tv_hello.text = "789"
        }

        //可变量
        var odd : Int = 0;
        var even : Int = 1;
        st_tv_hello.text = when (count){
            odd -> "123";
            even ->  "456";
            //if语句可以不没有else,when语句必须带上
            else ->  "789"
        }

        st_tv_hello.text = when (count){
            1,2,3,4,5,6,7,8 -> "123";
            //9~18之间
            in 9..18 ->  "456";
            //除了6~10之间
            !in 6..10 -> "222"
            //if语句可以不没有else,when语句必须带上
            else ->  "789"
        }

  *区间
  区间表达式由具有操作符形式 .. 的 rangeTo 函数辅以 in 和 !in 形成。

for (i in 1..4) print(i) // 输出“1234”

for (i in 4..1) print(i) // 什么都不输出

if (i in 1..10) { // 等同于 1 <= i && i <= 10
    println(i)
}

// 使用 step 指定步长
for (i in 1..4 step 2) print(i) // 输出“13”

for (i in 4 downTo 1 step 2) print(i) // 输出“42”


// 使用 until 函数排除结束元素
for (i in 1 until 10) {   // i in [1, 10) 排除了 10
     println(i)
}  

  类型检测和自动转换:我们可以使用 is 运算符检测一个表达式是否某类型的一个实例(类似于Java中的instanceof关键字)

fun getStringLength(obj: Any): Int? {    
    if (obj is String) {
        // 做过类型判断以后,obj会被系统自动转换为String类型
        return obj.length 
      }

      //在这里还有一种方法,与Java中instanceof不同,使用!is
       if (obj !is String){
         // XXX
       }
    
      // 这里的obj仍然是Any类型的引用
      return null
} 

循环处理
 
Kotlin循环处理依旧采用for和while关键字,只是细微上有些微调

        var sList : List<String> = listOf("123","13","14");
        //for-in循环 java(for(item:sList))
        var desc = "";
        for (item in sList){
            desc = "${desc}名称:${item}\n";
        }
        //for-in循环 1
        desc = "";
        // sortBy表示升序排列,后面跟的是排序条件
        sList.sortedBy {
            it.length
        }
        // sortByDescending表示降序排列,后面跟的是排序条件
        sList.sortedByDescending {
            it.length
        }
        // indices是队列的下标数组。如果队列大小为10,下标数组的取值就为0~9 java(for(初始;;))
        for (i in sList.indices){
            desc = "${desc}名称:${sList[i]}\n";
        }
        //迭代器遍历
        var desc1 = "";
        var iterator = sList.iterator();
        //如果迭代器还存在下一个节点,就继续取出下一个节点的记录
        while (iterator.hasNext()){
            var next = iterator.next()
            desc1 = "${desc1}名称:${next}\n";
        }
        //foreach遍历
        var desc2 = "";
        sList.forEach{
            desc2 = "${desc2}名称:${it}\n";
        }
     //跳出多重循环
        var e:Int =0;
        var e1:String? ="hsdgfhjklsdfkjjkl";
        outside@ while (e< e1?.length ?:0){
            var q:Int =0;
            var item : Char = e1?.get(e) ?:‘e‘;
            while (q<item.toInt()) {
                    if(q==8){
                        break@outside
                    }
                q++
            }
            e++
        }

*等式判断 kotlin中用来比较字符串相等用‘==’ (java中用‘equals’)表示,如果要想连通存储地址一同比较可以用‘===’(java中用‘==’)

  

Kotlin控制语句

标签:没有   des   if语句   ice   ceo   xxx   检测   字符   lambda   

原文地址:https://www.cnblogs.com/javaktolin/p/13586304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!