Kotlin基础之控制语句

条件分支

if...else

    /**
     * 控制语句:if,分支语句可以返回值
     */
    fun controlIf(){
        btn_if.setOnClickListener {
            var a = 23
            var b = 40
            //Java中if语句
//            var result :Boolean
//            if (a > b){
//                result = true
//            }else{
//                result = false
//            }
//             textShowControl.text = "${result}"

            //Kotlin中if else 语句:if else语句可以有返回值
            var result :Boolean  = if(a > b) true else false
            //Kotlin的类型推断功能
            var result1   = if(a > b) 1 else 2

            textShowControl.text = "${result}   类型推断:${result1}"
        }
    }

说明: 与Java中的if...else相似,不同在于Kotlin中的if...else允许分支语句返回值。Kotlin中没有三元运算符

when/else(取缔switch/calse)

/**
 * 控制语句:When else,分支语句可以返回值
 */
fun controlWhen(){
    var one = 2
    var count = 43
    btn_when.setOnClickListener {
        textShowControl.text  = when(count){
            0 -> "是Int类型,值为0"
            one,1,3,4,5,6,7,8,9 -> "是个位数"//分支语句可以是变量,多个常量使用","隔开
            one * 10 -> "是整十位数"//分支语句可以是运算表达式
            in 100 ..999 -> "是百位数"//分支语句可以是区间
            !in 0..999 -> "百位以上的数"
            else -> "不知道是几"
        }
        var str = textShowControl.text
        textShowControl.text = "${str}"+when(textShowControl.text){
            is String -> " --- 字符串类型"
            else -> "不知道什么类型"
        }
        //textView显示结果:不知道是几 --- 字符串类型
    }
}

说明:

  • 关键字when 取缔 switch
  • "常量值 ->" 取缔 case 常量值,常量值可以是变量、运算表达式、区间、类型判断
  • else 取缔 default
  • break取消,when默认一个分支处理完成就直接跳出语句了。若是常量值是多个,每个使用“,”隔开

类型判断

判断某个变量是否是某个类型:is

  • is 取缔 instanceof

循环

for循环

/**
 * 映射的声明初始化和遍历
 */
fun map(){
    btn_map.setOnClickListener {
        var map :Map = mapOf(Pair("你好1","嗨,你好1"),Pair("你好2","嗨,你好2"))
        var str = ""
        for(it in map){
            //it表示的到的是键值对
            str = "${str}${it.key}--${it.value}\n"
        }
        textShow.setText(str)
    }
}

forEach循环

/**
 * 使用forEach遍历集合
 */
fun setForEach(sets: Set) {
    btn_set_Each.setOnClickListener {
        var str = ""
        var index = 0
        sets.forEach {
            index++
            str = "${str}${index} .${it}\n"
        }
        textShow.setText(str)
    }
}

说明:it表示的是每个元素

条件循环

Kotlin中没有for(初始;条件;增减)这样的语句了,若要使用这样的语句可以采用while循环

/**
 * 控制语句:While 可以代替Java中的条件for循环
 */
fun controlWhile(){
    var lists: MutableList = mutableListOf("v", "fdsg", "sxfdhdfvsd", "sd", "dfd")
    btn_while.setOnClickListener {
        var str = ""

       var index = 0//初始化语句
        while(index < lists.size){//判断语句
            str = "${str}${index+1}--${lists.get(index)}\n"
            //增减语句
            index++
        }
        textShowControl.text = str;
    }
}

跳出循环

  • continue:跳出此次循环,继续下一次循环
  • break:跳出此层循环
    与Java类似,给多层循环加上名称,退出循环则

等式判断

结构相等

结构相等:判断变量值,也就是内存中存储的内容是否相等的,
格式:“==”
对于基本数据类型(String在Kotlin也是基本类型)而言,结构与引用都是相等的;

引用相等

引用相等:判断两个对象的内存地址值是否相同的。
格式:“===”

运算符 is 、!is、in、!in

  • is/!is:判断变量是否属于某种类型
  • in/!in:判断数组、容器中是否存在某个元素的

空值

Kotlin引入了空安全的概念,并在编译时开展变量是否为空的校验。相关的操作符说明如下

  • 声明变量实例时,在类型名称后面加问号,表示该变量可以为空。
  • 调用变量方法时,在变量名称后面加问号,表示一旦变量为空就返回null
  • 新引入运算符“2:”,表示一旦变量为空,就返回该运算符右边的表达式。
  • 新引入运算符“!”,通知编译器不做非空校验。如果运行时发现变量为空,就扔出异常

参考资料:《Kotlin从零到精通-Android开发》
Demo地址:https://github.com/sexyhair79/demokotlinBasics

你可能感兴趣的:(Kotlin基础之控制语句)