java 中的 final 关键字在应用时是否显示出不同的效果:- 1) 在基元上 2) 在对象上?
Does final keyword in java show varying effects when applied :- 1) on a primitive 2) on an object?
在我看来好像:-
当 final 应用于基元时,它的行为类似于指向常量的指针 :-
const (type)* ptr
并且当 final 应用于一个对象时,它表现为一个常量指针 :-
(type)* const ptr
影响是一样的
您无法更改篮子。不过里面的水果还是可以换的。
忘掉指针和常量吧,final
意味着你不能重新初始化它,一旦你声明它final
。
对象不是最终的唯一引用。您仍然可以更改对象,但不能重新引用它。
你的第一点是误会。
原始变量的行为永远不像指针 - 原始变量的值是原始的。
对象变量的值是对对象的引用。
final
适用于变量,不适用于值,这意味着您不能为变量分配新值。
如果它是原始变量,它的值保持不变。
如果它是一个对象变量,则该变量总是引用相同的、可能可变的对象。
所以行为是相同的。
在我看来好像:-
当 final 应用于基元时,它的行为类似于指向常量的指针 :-
const (type)* ptr
并且当 final 应用于一个对象时,它表现为一个常量指针 :-
(type)* const ptr
影响是一样的
您无法更改篮子。不过里面的水果还是可以换的。
忘掉指针和常量吧,final
意味着你不能重新初始化它,一旦你声明它final
。
对象不是最终的唯一引用。您仍然可以更改对象,但不能重新引用它。
你的第一点是误会。
原始变量的行为永远不像指针 - 原始变量的值是原始的。
对象变量的值是对对象的引用。
final
适用于变量,不适用于值,这意味着您不能为变量分配新值。
如果它是原始变量,它的值保持不变。
如果它是一个对象变量,则该变量总是引用相同的、可能可变的对象。
所以行为是相同的。