Kotlin學(xué)習(xí)筆記之const val與val
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區(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 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
......
}
從字節(jié)碼我們可以看到const val 和val修飾對象的主要區(qū)別是:
- const val 可見性為public final static,可以直接訪問。
- val 可見性為private final static,并且val 會生成方法getNormalObject() ,通過方法調(diào)用訪問。
附:Kotlin中var和val的區(qū)別
Kotlin中有兩個(gè)關(guān)鍵字定義變量,這兩個(gè)關(guān)鍵字外形看著差別很小就只差了一個(gè)字母,但實(shí)際差別很大的。
var是一個(gè)可變變量,這是一個(gè)可以通過重新分配來更改為另一個(gè)值的變量。這種聲明變量的方式和java中聲明變量的方式一樣。
val是一個(gè)只讀變量,這種聲明變量的方式相當(dāng)于java中的final變量。一個(gè)val創(chuàng)建的時(shí)候必須初始化,因?yàn)橐院蟛荒鼙桓淖儭?/p>
var name = "zhang san" println(name) name = "li si" println(name) val finalValue = "我是不可改變的"; println(finalValue);
總結(jié):
當(dāng)定義常量時(shí),出于效率考慮,我們應(yīng)該使用const val方式,避免頻繁函數(shù)調(diào)用。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android使用ShareSDK實(shí)現(xiàn)應(yīng)用分享的功能
這篇文章主要為大家詳細(xì)介紹了Android使用ShareSDK實(shí)現(xiàn)應(yīng)用分享的功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android 按后退鍵退出Android程序的實(shí)現(xiàn)方法
本篇文章介紹了,在Android中按后退鍵退出Android程序的實(shí)現(xiàn)方法。需要的朋友參考下2013-04-04
Android編程重寫ViewGroup實(shí)現(xiàn)卡片布局的方法
這篇文章主要介紹了Android編程重寫ViewGroup實(shí)現(xiàn)卡片布局的方法,實(shí)例分析新建FlowLayout繼承ViewGroup類及設(shè)置布局文件實(shí)現(xiàn)卡片布局效果的相關(guān)技巧,需要的朋友可以參考下2016-02-02
Android Studio使用教程(二):基本設(shè)置與運(yùn)行
這篇文章主要介紹了Android Studio使用教程(二):基本設(shè)置與運(yùn)行,本文講解了項(xiàng)目結(jié)構(gòu)、偏好設(shè)置、常用功能介紹、創(chuàng)建模擬器等內(nèi)容,需要的朋友可以參考下2015-05-05
android中TabHost的圖標(biāo)(48×48)和文字疊加解決方法
開發(fā)過程中,有時(shí)候圖標(biāo)稍微大點(diǎn),比如48×48的時(shí)候,文字就會和圖標(biāo)疊加起來,遇到這種問題我們該怎樣處理呢?本文將詳細(xì)介紹希望對你有所幫助2013-01-01
Android App端與PHP Web端的簡單數(shù)據(jù)交互實(shí)現(xiàn)示例
本篇文章主要介紹了Android App端與PHP Web端的簡單數(shù)據(jù)交互實(shí)現(xiàn)示例,詳細(xì)的介紹了交互的代碼,非常具有實(shí)用價(jià)值,有興趣的可以了解一下2017-10-10
android studio編譯jar包或者aar包的方法教程詳解
這篇文章主要介紹了android studio編譯jar包或者aar包的方法教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03

