Kotlin 筆記

伴生對象java

伴生對象(companion object )相似於java中的靜態關鍵字static。在Kotlin沒有這個關鍵字,而是伴生對象,具體用法安全

open class People constructor(var id: String,  var name: String){
    //能夠類中初始化屬性:
    var customName = name.toUpperCase() //初始化屬性

    //使用constructor前綴聲明,且必須調用primary constructor,使用this關鍵字
    constructor( id: String, name: String, age: Int) : this(id, name) {
        println("constructor")
    }

    init {
        println("初始化操做,可以使用constructor參數")
    }
   //,Kotlin的class並不支持static變量,因此須要使用companion object來聲明static變量,
   // 其實這個platformStatic變量也不是真正的static變量,而是一個伴生對象,
    companion object {
        val ID = 1
    }
}

使用的話直接People.IDthis

變量類型:可空指針

kotlin的特性之一是類型安全。定義變量時須要定義該變量是否爲空,一旦要求變量不能爲空,那後續的空指針問題天然也不復存在。咱們先來看kotiln裏是如何定義變量的:code

java:

String str = "test";
final String str2 = "test2";
String str3;

kotlin:

var str = "test"
val str2 = "test2"
var str3:String ?= null

kotlin使用var,val關鍵字定義變量,若是在定義變量時直接賦值,則能夠不用指定變量類型,不然須要在變量名後使用「:」來指定類型。在類型後加「?」表示該變量可空。若是變量可空,那在後續使用變量時,就必須先判斷是否爲空。 另外從代碼中能夠看出很重要的一點,那就是:今後不再用寫分號啦orm

var a:Int = null  //錯誤,類型後沒?,即不可空類型,天然不能等於null
var a:Int? = null  //正確

val canNull: Int ? = 0 
canNull.toFloat  //錯誤,可空變量調用時要判斷空
canNull?.toFloat   //正確,(若是是null,什麼都不作)
canNull!!.Float   //正確,(若是null,報空指針)
val canNotNull: Int  = 0 
canNotNull.toFloat  //正確

那若是在定義變量時(例如定義成員變量),又想該變量不爲空,又不想子定義時就初始化要怎麼辦呢?使用lateinit關鍵字對象

lateinit var test:String //正確
lateinit val test:String //錯誤
lateinit var test:Float //錯誤

可見,lateinit修飾符只能修飾不可空類型,而且不容許修飾基礎類型(四類八種基礎類型int, double,boolean等)。it

Java四類八種基礎類型io

java基本數據類型:四類八種form

數值型:整型 byte short int long 非數值:字符型 char

浮點型 float double 布爾 boolean

相關文章
相關標籤/搜索