1. 程式人生 > >kotlin學習(1)

kotlin學習(1)

設置 種類 更換 訪問 setter 如果 模板 學習 fir

變量聲明:

  類型放在變量名後面: 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 width: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,可以省略


kotlin學習(1)