const的使用
const 必須修飾val
const 只允許在top-level級別和object中聲明,使用方式如下:
const val THOUSAND = 1000object myObject { const val constNameObject: String = "constNameObject"}class MyClass { companion object Factory { const val constNameCompanionObject: String = "constNameCompanionObject" }}const val和val區(qū)別:
說到這,我們還是沒有搞清楚const和val的區(qū)別,ok讓我們看代碼分析。
object myObject { const val constObject: String = "constObject" val normalObject: String = "normalObject"}打開Android studio 點(diǎn)擊 Tools->Kotlin->Show Kotlin ByteCode
// class version 50.0 (50)// access flags 0x31public final class com/example/kotlin/myObject { // access flags 0x19 public final static Ljava/lang/String; constObject = "constObject" @Lorg/jetbrains/annotations/NotNull;() // invisible // access flags 0x1A private final static Ljava/lang/String; normalObject = "normalObject" @Lorg/jetbrains/annotations/NotNull;() // invisible // access flags 0x11 public final getNormalObject()Ljava/lang/String; @Lorg/jetbrains/annotations/NotNull;() // invisible L0 LINENUMBER 144 L0 GETSTATIC com/example/kotlin/myObject.normalObject : Ljava/lang/String; ARETURN L1 LOCALVARIABLE this Lcom/example/kotlin/myObject; L0 L1 0 MAXSTACK = 1 MAXLOCALS = 1 ......}從字節(jié)碼我們可以看到const val 和val修飾對象的主要區(qū)別是:
附:Kotlin中var和val的區(qū)別
Kotlin中有兩個關(guān)鍵字定義變量,這兩個關(guān)鍵字外形看著差別很小就只差了一個字母,但實(shí)際差別很大的。
var是一個可變變量,這是一個可以通過重新分配來更改為另一個值的變量。這種聲明變量的方式和java中聲明變量的方式一樣。
val是一個只讀變量,這種聲明變量的方式相當(dāng)于java中的final變量。一個val創(chuàng)建的時候必須初始化,因?yàn)橐院蟛荒鼙桓淖儭?/p>
var name = "zhang san" println(name) name = "li si" println(name) val finalValue = "我是不可改變的"; println(finalValue);
總結(jié):
當(dāng)定義常量時,出于效率考慮,我們應(yīng)該使用const val方式,避免頻繁函數(shù)調(diào)用。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選