Kotlin从入门到放弃之基础篇(二)——包和控制流

来源:互联网 发布:极路由网络唤醒 编辑:程序博客网 时间:2024/06/10 18:15

Kotlin从入门到放弃之基础篇(二)

写在前面的乱七八糟的话:此为Kotlin学习路上的第三篇文章,希望各位大神不吝赐教,

源文件从包的声明开始的:

    package demo    fun main(args : Array<String>){        val b  = arrayOfNulls<Int>(4)        b.set(0,2)        println(b[0])    }

源文件中的所有声明都被包声明包括。如果没有指定包名,则这个文件的内容从属于默认的”Default”包
♣ 我们通过”import”关键字来完成倒入指令

    import demo.UserBean //倒入一个单独的名字    import demo.* //倒入kotlin下所属的所有内容

如果存在命名冲突

    import demo.UserBean //daoru UserBean    import test.UserBean as User //User代表testUserBean 

♣ 可见性和包嵌套:如果最顶层的声明标注为private,那么它自己对应包私有。如果包内有私有 属性或方法,那么他对所有的子包是可见的,包外的成员默认是不倒入的,即倒入demo.UserBean后不能直接使用demo.PersonBean

控制流

if

在Kotlin中,if是可以作为一个表达式的。是除了condition?then:else之外的唯一一个三元表达式。

    //传统的用法,和Java中相似    var max= a    if(a < b)        max=b     //带else    var max : Int    if(a < b)        max=b    else        max=a    //作为一个三元表达式    val max = if(a > b) a else b

if表达式中的分支可以作为块,最后一表达式为该块的值

    val max =if(a > b){        print("这是分支")        a    }else{        print("这也是分支")        b    }

如果if只有一个分支,或其分支返回的结果为Unit则其值为Unit

when

与Java相比,在Kotlin中用when取代了switch。简单来说:

   fun testWhen(x : Any){       when(x){           1 ->print("this is num")           "1" ->print("this is string")           "English" -> print("this is English")           else{               print("this is shit")           }       }   }

when 会检查所有的分支知道有一个条件满足。when同样可以用作表达式或者声明。作为表达式时,满足条件的表达式即为总的表达式,当用作声明时分支的值会被忽略(像 if 表达式一样,每个分支是一个语句块,而且它的值就是最后一个表达式的值)。例如:

    fun testWhen(x :Any):String{        var a = when(x){            1-> 1   //表达式有参数            in 1..10-> "在1~10的区间内" //表达式无参数            is String ->"为 String" //可以用任意条件作为表达式分支            else{                print("默认情况")                "sx"             }        }        return a     }

由上述代码可以看出,当when表达式有参数时实现了Java中的switch的效果,当when表达式无参数时实现了Java中的if else if语句的效果

注意:when语句与密封类可以一起使用而不需要写else分支。

for

在遍历某个队列时,Koglin中的for循环与Java中不同的是:Java通过”for(item : list)” 而Kotlin中则是使用”for(item in list)” .例如:

    var strArray:Array<String> =arrayOf("这是1","这是2","这是3")    for(i in  strArray){        print("$i,\n")    }

另一方面,Kotlin废除了”for(初始;条件;增减)”这个规则,若要实现该功能则应为”for(i in array.indices)” 其中indices表示该数组对象的下标数组,所以上面代码可以改为:

    var strArray:Array<String> = arrayOf("这是1","这是2","这是3");    for(i in strArray.indices){        print("${strArray[i]} \n")    }

while

Kotlin将Java中的while保留了下来,同时do/while也和Java中的用法相同,在这里不进行过多赘述。

循环中的break和continue

Kotlin保留了Java中的break和continue关键字。但同时Kotlin中可以为表达式添加标签,两者结合可以产生一些新的变化。例如:

    fun  test(){         val strList:Array<String> = arrayOf("这是1","这是2","这是3")        val intList:Array<Int> = arrayOf(1,2,3)        demo@   for(j in intList){            print("$j \n")             for(i in strList.indices){                if(i===0) print("${strList[i]} \n")                if(i===1) break@demo//此处会跳转出外层循环(即:打破了break只能跳出当前循环的限制)                if(i===2) print("${strList[i]} \n")            }        }    }

此处只做一个最简单的例子,关于标签的应用,后面的文章中会详细讨论。

阅读全文
0 0
原创粉丝点击