摘要:關(guān)鍵字在聲明一個(gè)對象時(shí)有兩種用法,第一種,在使用這個(gè)類的時(shí)候聲明,就像這樣不合法可以向?qū)ο蠹訑?shù)據(jù)。第二種,在定義這個(gè)類的時(shí)候使用關(guān)鍵字比如這種他僅僅表示不能被繼承。因此,定義類使用關(guān)鍵字與在類中間聲明一個(gè)是對象成員變量是的作用是不一樣。
String不可變的是參考這里。
http://www.2cto.com/kf/201401/272974.html
String 不可變得一個(gè)重要原因是因?yàn)镾tring被聲明成了final類,但是觀察Stringbuffer也被聲明成了final類。所以,String 不可變得原因不是因?yàn)槠湓诼暶鞯臅r(shí)候聲明生了final,而是在各種方法的內(nèi)部都是return了一個(gè)新的對象,所以String是不可修改的。
final關(guān)鍵字在聲明一個(gè)對象時(shí)有兩種用法,第一種,在使用這個(gè)類的時(shí)候聲明,就像這樣:
javapublic class Day01 { private static final List Loans = new ArrayList(); public static void main(String[] args) { Loans.add("xxx"); Loans = new Vector(); //不合法 } }
可以向?qū)ο蠹訑?shù)據(jù)。但是不能使他的引用指向另外一個(gè)對象。
第二種,在定義這個(gè)類的時(shí)候使用final關(guān)鍵字:
比如這種:
javapublic final class String{ }
他僅僅表示不能被繼承。但是他的引用依然能夠指向其他的對象:
java String a="ccc"; a="bbbb";
一個(gè)例子:
javapublic final class HelloWorld { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "HelloWorld [name=" + name + ", age=" + age + "]"; } } public class Day01 { private static final List Loans = new ArrayList(); public static void main(String[] args) { HelloWorld a=new HelloWorld(); a.setName("x"); a=new HelloWorld(); a.setName("y"); } }
在定義類的時(shí)候聲明這個(gè)類是final的,但是它的引用依然可以指向別的對象。因此,定義類使用final關(guān)鍵字與在類中間聲明一個(gè)是對象成員變量是final的作用是不一樣。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/64346.html
摘要:作為條件變量的的不僅可以認(rèn)為內(nèi)嵌了一把鎖,還內(nèi)嵌了一個(gè)條件變量。操作條件變量的函數(shù)將當(dāng)前線程在條件變量上阻塞,一般是為了等待其他線程的某件事情執(zhí)行完成。其它裝箱類其它裝箱類的代碼這里就不分析了。重點(diǎn)關(guān)注下各裝箱類的緩存范圍。 jdk源碼讀到現(xiàn)在這里,重要的集合類也讀了一部分了。集合類再往下讀的話,就要涉及到兩個(gè)方向。第一,是比較典型的但是不常用的數(shù)據(jù)結(jié)構(gòu),這部分我準(zhǔn)備將數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)、回...
摘要:因此,對應(yīng)地我們可以翻譯這段二進(jìn)制字節(jié)碼為這樣的代碼注意,這段代碼并不能通過編譯,因?yàn)樵创a這一層是不允許直接繼承的,這個(gè)繼承過程只允許在編譯器內(nèi)部解語法糖的過程中被編譯器添加,添加之后的類才會(huì)有的訪問標(biāo)識(shí)符。 語法糖(Syntactic Sugar)的出現(xiàn)是為了降低我們編寫某些代碼時(shí)陷入的重復(fù)或繁瑣,這使得我們使用語法糖后可以寫出簡明而優(yōu)雅的代碼。在Java中不加工的語法糖代碼運(yùn)行時(shí)可...
Object 相關(guān)概念 Object 是 java 中的頂級(jí)父類,它是所有類的超類,所有對象以及數(shù)組均會(huì)實(shí)現(xiàn)這個(gè)類提供的方法 JVM 在編譯源碼過程中,遇到?jīng)]有繼承 Object 的對象時(shí),編譯器會(huì)指定默認(rèn)父類 Object 接口沒有繼承頂級(jí)父類,但會(huì)隱式的聲明一套和 Object 中的方法簽名完全一樣的方法,這也就符合萬物皆對象的面向?qū)ο笏枷?,任何對象直接或間接的跟 Object 對象有關(guān) O...
摘要:所以我決定先從類入手,深入的研究一番來開個(gè)好頭。之所以會(huì)有以上的效果,是因?yàn)橛凶址A砍氐拇嬖?。同時(shí)運(yùn)行時(shí)實(shí)例創(chuàng)建的全局字符串常量池中有一個(gè)表,總是為池中的每個(gè)字符串對象維護(hù)一個(gè)引用,所以這些對象不會(huì)被。 開始寫 Java 一年來,一直都是遇到什么問題再去解決,還沒有主動(dòng)的深入的去學(xué)習(xí)過 Java 語言的特性和深入閱讀 JDK 的源碼。既然決定今后靠 Java吃飯,還是得花些心思在上...
閱讀 1302·2021-11-11 16:54
閱讀 938·2021-10-19 11:44
閱讀 1401·2021-09-22 15:18
閱讀 2521·2019-08-29 16:26
閱讀 3017·2019-08-29 13:57
閱讀 3161·2019-08-26 13:32
閱讀 1155·2019-08-26 11:58
閱讀 2404·2019-08-26 10:37