美文网首页
Kotlin学习

Kotlin学习

作者: 水瓶鱼 | 来源:发表于2018-02-27 14:50 被阅读10次

    基本语法

    • 声明变量
    val a:Int=1 // val 标识的变量不可变 相当于java中的final
    var a:Int=0 // var 标识的变量为可变变量
    var a:Int=null // 显示声明可空变量
    
    //Kotlin 中没有标识变量,方法为静态的关键字
    class A{
        companion object{
            //在这里声明的变量,方法相当于Java中的静态变量,方法
        }
    }
    
    lateinit var o:Object //lateinit:修饰变量表示这个变量会在使用之前由用户主动赋值,使用时不再做非空判断,如果使用时未赋值,会抛出空异常。
    
    • 类继承
    class Base(Int a,Int b){}
    
    class A(Int a,Int b) : Base(a,b){
        //初始化代码块
        Init{}
    }
    
    • 方法声明
    /**
    *定义一个方法,方法的参数可以有默认值,返回值类型为Int
    */
    fun a(a:Int,b:Int,c:Int=0):Int{
        return 0
    }
    //调用方法
    a(0,0,1)
    
    a(0,0)  //参数c 使用默认值
    
    a(a=0,b=0,c=1) // 
    

    与Java的不同点

    • 没有三元操作符

    Kotlin中if 可以是一个表达式,因此没有三元操作符

    //java:
    int a=b>c?b:c;
    //kotlin:
    val a=if (b>c) b else c
    
    • 没有switch 关键字,相同功能可使用when代替
    var a=3
    when(a){
        1->...
        2->...
        else->...
    }
    
    • Kotlin 中class 默认为final类,不能被继承,如果想拥有子类,需用 open 关键字修饰

    方法

    • lambdas

    lambda表达式由{}包裹,-> 符号 前边是参数,后边是body,如果函数有返回值,最后一行为返回值。

    如果lamdba只有一个参数,可省略参数和->符号,在body中 it 表示入参

    如果参数有多个并且部分参数在body 中不会使用可用 _ 表示

    // lambdas 使用示例
    
    // fun1 使用方法作为参数
    fun fun1(noMeaning(a:Int,b:Int)->Int){}
    // 调用fun1 并使用lamdba作为参数
    fun1({1,2->2})
    // 
    fun1({_,_->3})
    

    相关文章

      网友评论

          本文标题:Kotlin学习

          本文链接:https://www.haomeiwen.com/subject/lwfmxftx.html