zoukankan      html  css  js  c++  java
  • kotlin学习(1)基础

    所有笔记整理自电子工业出版社的《Kotlin实战》一书

    变量声明:

      类型放在变量名后面: val name:String="aaaa" ,String可以省略,因为可以根据等号后面的内容自动判断出name的类型

      如果可空: val name:String?=null 

    var:

      修饰的变量可读可写;值可以被改变,但类型不可以。

    val:

      修饰的变量只可读。这代表着被val修饰的变量初始化后不可再次赋值,其变量名所指向的对象,虽然不可以更换,但是可以被改变的。如变量名指向一个链表A,它不可以重新指向另一个链表B,但A是可以添加新的节点的。

    //这样是正确的
    val A=arrayListOf("Java")
    A.add("Kotlin")
    
    //这句会报错
    A=arrayListOf("C")

    字符串模板:

       var name="Kotlin" println("hello,${name}!") ,可以在字符串中用${ }来插入变量。

    Kotlin中的getter与setter:

      Kotlin中声明类的属性时,会默认创建setter和getter访问器。Java和Kotlin都可以通过访问器访问属性。

      Java中可以直接使用get、set方法,需要注意的是,如果属性名以is开头,那么get方法不需要添加get前缀,使用set方法需要把is前缀更换成set;

      Kotlin可以直接调用属性,如 Person.name ,这样其实是调用了访问器。

    自定义访问器:

    //isSquare属性代表这个矩形是否为正方形
    class Rectangle(val height:Int,val Int){
        val isSquare:Boolean
                 get(){
                         return height==width //Kotlin中没有所谓的基本数据类型,包括Int都相当于Java中的Integer包装类,而==重载了equals方法,所以所有类型都可以用==比较是否相等,实际上是使用equals来比较的。
                  }  
    }    

    Kotlin的.kt文件中可以放多个类。

    枚举

    enum class Color{
         RED,BLUE,GREEN,YELLOW,ORANGE  
    }
    
    //带属性的枚举类
    enum class Color(val r:int, val g:Int, val b:Int){
            //结尾有分号  
            RED(255,0,0),BULE(0,0,255),YELLOW(255,255,0);
            //给枚举类定义一个方法
            fun rgb() = (r * 256 + g) * 256 +b
    }
    
    >>>println(Color.BLUE.rbg())
           255

    when:

      代替了Java中的swich case

    fun getFirst(color:Color)=when(color){
               Color.RED->"R"
               Color.BLUE->"B"
               Color.GREEN->"G"
    else->"err" } >>>println(getFirst(Color.BULUE)) B

    智能转换:

      is 相当于Java中的 instanceOf ,用来判断一个对象是否是某种类型。与Java区别在于,Java使用 instanceOf之后,如果想要使用变量,需要自己进行类型转换。而 is 在进行比较之后,可以直接当做这种类型对象来用,其已经隐式的帮你转换过类型了。

      下面代码中,判断xiaoMing如果属于Person类,就可以直接使用Person类的getAge方法

    if(xiaoMing is Person){
          println(xiaoMing.age)
    }

    if :

      Kotlin中 if 带返回值,相当于Java中的三元运算符 ?: ,所以可以直接使用if来重写方法:

    fun getResult(num:Int):Boolean=
        if(num>5){
            true   //如果是代码块,最后一行会被当做返回值
        }else{
            false
        }
    //可以用when来代替if

    while、 do while:与Java中一样。

    for循环:

      区间:表达两个数字之间的间隔 val oneToten = 1..10 //区间是闭合的,所以1和10都在区间里,这里代表1 到 10 

      没有 for i 循环了,只有类似for each循环,Kotlin中写法为

    for(i in 1..100 step 2){  }  //设置步长为2,默认为1,可以省略

  • 相关阅读:
    理解闭包
    .net 应用程序执行过程
    Lambda 表达式
    栈的应用
    C# string
    自包含 与 自描述
    C# 值类型 与 引用类型
    C# 装箱 与 拆箱
    sql server分页的两种方法比较
    九月天开博日志
  • 原文地址:https://www.cnblogs.com/liumaowu/p/9400207.html
Copyright © 2011-2022 走看看