亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

嫩江县| 衡水市| 尉犁县| 德惠市| 卢湾区| 罗甸县| 晋江市| 宁夏| 县级市| 怀化市| 军事| 集安市| 高密市| 沙雅县| 皋兰县| 龙游县| 桐乡市| 吉林省| 鄂托克前旗| 靖安县| 枣阳市| 福鼎市| 青冈县| 山西省| 吐鲁番市| 黔东| 乐昌市| 松江区| 尉犁县| 三门峡市| 奈曼旗| 前郭尔| 大竹县| 谷城县| 平山县| 永平县| 静安区| 伽师县| 伊春市| 澄城县| 沙田区|