关于?号的疑惑,求解
kotlin吧
全部回复
仅看楼主
level 1
今天想学习kotlin的基础语法,从官网下载了个文档!关于数值比较有点不理解,官网例子:
/***
fun main(args: Array<String>) {
val a: Int = 10000 println(a === a) // true,值相等,对象地址相等 //经过了装箱,创建了两个不同的对象
val boxedA: Int? = a
val anotherBoxedA: Int? = a //虽然经过了装箱,但是值是相等的,都是10000
println(boxedA === anotherBoxedA) // false,值相等,对象地址不一样
println(boxedA == anotherBoxedA) // true,值相等}
***/
关于a = 100两个都是ftrue的问题,百度到了,因为虚拟机自动缓存-128 ~ 127!现在想知道,为什么我把?去掉,两种比较为什么都是true???
附上:
2018年08月22日 02点08分 1
level 4
有?是Integer,去掉?是int
2018年08月23日 12点08分 4
不是!kotlin没有基本类型,只有包装类,所以没Integer和int的区别
2018年08月23日 12点08分
@☞叫什么啊☜ 我知道,但是编译到字节码的时候是有区别的,这两种可空类型和不可空类型正好对应java的Integer和int
2018年08月23日 13点08分
@☞叫什么啊☜ 你把你的代码反show bytecode,再反编译成java一看就知道了
2018年08月23日 13点08分
1