java final属性
java final屬性
看到有個程序中有個屬性聲明是這樣的
private static long counter = 0;
private final long id = counter++;
final不是不能更改嗎?這里怎么還counter++呢?求解釋,謝謝
class Composing {
private static long counter = 0;
private final long id = counter++;
public Composing() {}
}
public class ReferenceCounting13 {
public static void main(String[] args) {
Shared shared = new Shared();
Composing[] composing = { new Composing(shared),
new Composing(shared), new Composing(shared),
new Composing(shared), new Composing(shared)
};
也就是說每次new Composing(shared), 的時候都要初始化一次id屬性?
答:
final 聲明的是最終變量,方法,或類,一旦創建便不可更改,final聲明的最終方法不可被修改,最終類不可被繼承!上面id使用final修飾聲明的,一旦賦值之后,便不可再原來的值。private final long id = counter++;這句代碼的意思是,先把counter的值賦給id,然后在執行counter+1;所以id的值為0,counter的值為1。id是新創建的,以前并沒有值,此處只是給他賦值為counter。執行完這句代碼之后,便不能再次對它賦值,和自增,減運算!
總結
以上是生活随笔為你收集整理的java final属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c程序内存分布[转载]
- 下一篇: 九度OJ 1547 动态规划