2013-09-30 47 views
0

什麼時候我宣佈類似情況:最終屬性?

public static final String forma = "Rectangular"; 

是不是多餘的?作爲字符串final類,那會是什麼改變沒有設置forma作爲最終的?對於static,我認爲它不進行任何更改。

回答

1

請參閱字符串是最終類別最終關鍵字使參考最終不是對象最終。
最終對象意味着它不能被改變,但是最終參考意味着它不能第一分配之後被分配給另一個對象。

作爲最終意味着你不能修改對象String s="hello""hello"是字符串對象,它不能被修改,但有關s如果非最終參考和我做的事情,如:s=s.concat("bing")然後,"hello"採取可與"bing"對象連接,然後分配給s意味着"hello" and "bing"對象沒有被修改,它們丟失了它們的引用並且非最終引用s現在指的是新對象"hellobing"
如果你覺得這個有趣,我一定會想要幫助你。

+0

因此對於一個String s來說,它的類是最後一個類,所以不允許談論引用。 – diegoaguilar

+0

@Diego現在你可以看看編輯答案 –

3

final確保參考未分配給新值。

如果你不讓它final,它是有效的一些其他的值賦給forma(或)你可以做一些Rectangular運行和分配結果返回給forma

0

是不是多餘的?

不,它不是多餘的。它是不變的。這個陳述的每個關鍵詞都有意義。 final使它不可變,static使它類變量public使它全球訪問

1

對於對象類型的'final'修飾符意味着對這個對象的引用不能改變,不是它的值!

0

final關鍵字負荷過重,並指在不同的語境完全不同的事情:

  • 上的字段和局部變量,它表示一個參考的內容不能改變。 (這與不變性不同。)
  • 在類上,它表示該類不能被子類化。
  • 上的方法時,表明該方法不能在子類覆蓋。
相關問題