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

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")
            }
        }
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值