KotlinAndroid技术知识Android开发

Kotlin之const val和val

2018-05-07  本文已影响21人  wenson123

const的使用

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方式,避免频繁函数调用。

上一篇下一篇

猜你喜欢

热点阅读