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修饰对象的主要区别是:
附: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方式,避免频繁函数调用。
孢子2生物进化中文版(Spores)
孢子2生物进化中文版让我们来做一回疯狂的博士,打造一个属于自
叫我万岁爷九游官方版
叫我万岁爷带你体验当换地点感觉,全新的模拟手游大作让你开始一
梦回凤歌
梦回凤歌手游中你将步入古代的宫廷纷争之中,本想度过美好幸福的
洋果子店rose最新版本
洋果子店最新版是一款十分容易让人垂涎的开店经营类手游。游戏玩
明日大亨最新版
明日大亨手游,一个非常经典有趣的模拟经营类型的商战手游,在游