hea*_*low 5 java variables android constants kotlin
我的理解方式是,“变量”一词指的是重新分配引用的能力。“常量”意味着不能重新分配引用。Java中final和not的本质区别。
var something = new obj() -> reference can be re-assigned
val something = new obj() -> cannot be re-assigned
Run Code Online (Sandbox Code Playgroud)
对我来说,“可变性”意味着修改 REFERAND/OBJECT 本身的能力,而不是修改它的引用。IE被引用的对象。但 Kotlin 并不能阻止这种情况。
你可以有
val something = new obj()
Run Code Online (Sandbox Code Playgroud)
但仍然能够“改变” obj() 而无需重新分配给新的标识符。
我是否误解了什么,或者这是用词不当?
\n\n声明变量有两个关键字:
\n\n
\n- \n
val
(来自值)\xe2\x80\x94不可变引用。val
用\xe2\x80\x99声明的变量在初始化后不能重新赋值。它对应于final
Java 中的\n变量。- \n
var
(来自变量)\xe2\x80\x94可变引用。这种变量的值是可以改变的。此声明对应于常规(非最终)Java 变量。请注意,即使
\nval
引用本身是不可变的并且可以更改,它指向的对象也可能是可变的。例如,\n此代码完全有效:Run Code Online (Sandbox Code Playgroud)\nval languages = arrayListOf("Java")\nlanguages.add("Kotlin")\n