中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kotlin學習筆記之const val與val

發布時間:2020-09-19 18:57:57 來源:腳本之家 閱讀:320 作者:wenson123 欄目:移動開發

const的使用

const 必須修飾val

const 只允許在top-level級別和object中聲明,使用方式如下:

const val THOUSAND = 1000
object myObject {
 const val constNameObject: String = "constNameObject"
}


class MyClass {
 companion object Factory {
 const val constNameCompanionObject: String = "constNameCompanionObject"
 }
}

const val和val區別:

說到這,我們還是沒有搞清楚const和val的區別,ok讓我們看代碼分析。

object myObject {
 const val constObject: String = "constObject"
 val normalObject: String = "normalObject"
}

打開Android studio 點擊 Tools->Kotlin->Show Kotlin ByteCode

// class version 50.0 (50)
// access flags 0x31
public 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
 ......
}

從字節碼我們可以看到const val 和val修飾對象的主要區別是:

  • const val 可見性為public final static,可以直接訪問。
  • val 可見性為private final static,并且val 會生成方法getNormalObject() ,通過方法調用訪問。

附:Kotlin中var和val的區別

Kotlin中有兩個關鍵字定義變量,這兩個關鍵字外形看著差別很小就只差了一個字母,但實際差別很大的。

var是一個可變變量,這是一個可以通過重新分配來更改為另一個值的變量。這種聲明變量的方式和java中聲明變量的方式一樣。

val是一個只讀變量,這種聲明變量的方式相當于java中的final變量。一個val創建的時候必須初始化,因為以后不能被改變。

var name = "zhang san" 
println(name) 
name = "li si" 
println(name) 
val finalValue = "我是不可改變的"; 
println(finalValue); 

總結:

當定義常量時,出于效率考慮,我們應該使用const val方式,避免頻繁函數調用。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善左旗| 新竹市| 永登县| 阜南县| 通辽市| 洪湖市| 浦北县| 金坛市| 越西县| 明水县| 长顺县| 长海县| 耒阳市| 霍林郭勒市| 湾仔区| 宁国市| 阳西县| 长阳| 顺昌县| 马尔康县| 班戈县| 聂荣县| 正宁县| 阿尔山市| 浦城县| 杭锦后旗| 鄱阳县| 金坛市| 三穗县| 长宁县| 慈利县| 浙江省| 澄城县| 即墨市| 策勒县| 开封市| 寿阳县| 绥德县| 罗城| 寿光市| 凤山市|