Kotlin中的const常量

来源:互联网 发布:网络黑白 百度文学 编辑:程序博客网 时间:2024/06/05 11:06

本来想作为kotlin一周总结的一个小点总结的,结果越来越多了,就单独拉出来练练

变量和常量

一般kotlin用到的是var和val
- var: 变量(读写)
- val:常量(只读)

但同时提供了一个const,val其实具有了大部分const拥有的功能,但是仔细对比了半天发现没什么卵用,但是又仔细一看,还有有点卵用的

const只能修饰val,不能修饰var

- 正确`const val testName = "ZhangSan"`- 报错`const var testName = "ZhangSan"`

经过const修饰的属性只能用拼接const修饰的属性去拼接

//const报错1val testName = "ZhangSan"//const报错2var testName = "ZhangSan"//正确const val testName = "ZhangSan"const val constNameNormal: String = "constNameNormal$testName"val nameNormal: String = "nameNormal$testName"

在java中引用不同

在kotlin中的引用

package mykotlin/** * Created by TaoYuan on 2017/9/7 0007. */fun main(args: Array<String>) {    println(constNameNormal)    println(nameNormal)    println(myObject.constNameObject)    println(myObject.nameObject)    println(MyClass.constNameCompanionObject)    println(MyClass.nameCompanionObject)}const val testName = "ZhangSan"//普通变量const val constNameNormal: String = "constNameNormal$testName"val nameNormal: String = "nameNormal$testName"//objectobject myObject {    const val constNameObject: String = "constNameObject"    val nameObject: String = "nameObject"}//companion objectclass MyClass {    companion object {        const val constNameCompanionObject: String = "constNameCompanionObject"        val nameCompanionObject: String = "nameCompanionObject"    }}

在java中的引用

        System.out.println(ConstDemoKt.getNameNormal());        System.out.println(ConstDemoKt.constNameNormal);        System.out.println(myObject.constNameObject);        System.out.println(myObject.INSTANCE.getNameObject());        System.out.println(MyClass.constNameCompanionObject);        System.out.println(MyClass.Companion.getNameCompanionObject());

这个已经一目了然了。在kotlin中,由于不存在包名的概念,都是直接引用的,所以不存在问题,在java中,必须写全路径,实质上经过const修饰的常量,才是java中理解的常量

可能以后还会碰到其他的坑,会继续在总结里记录

原创粉丝点击