Kotlin中的const常量

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

变量和常量

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

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

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

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

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

//const报错1
val testName = "ZhangSan"
//const报错2
var 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"

//object
object myObject {
    const val constNameObject: String = "constNameObject"
    val nameObject: String = "nameObject"
}

//companion object
class 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中理解的常量

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

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值