在kotlin中,三个等号===表示比较对象地址,两个==表示比较两个值大小。
kotlin"==="比较地址有点问题
1. 字符串的话都认为是对象,比较的都是地址
2.数值的话涉及到装箱问题(在 java 平台上,数值被 JVM 虚拟机以字节码的方式物理存储的)。
2.1 声明的时候允许为空,会装箱成对象(val a: Int? = 999)。后面赋值都是指向同一对象。
2.2 正常不允许为空的话(val a : Int = 999)还是数值。后面赋值装箱成了对象,比较地址。
2.3 这种情况都是数值
Notice:JVM把[-128,127]的所有int数字全部缓存了,不谈“装箱”。