亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JAVA String 源碼分析與final關(guān)鍵字

NickZhou / 3322人閱讀

摘要:關(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

相關(guān)文章

  • 源碼|jdk源碼之Object及裝箱類型分析

    摘要:作為條件變量的的不僅可以認(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í)、回...

    VioletJack 評(píng)論0 收藏0
  • Java語法糖的編譯結(jié)果分析(二)

    摘要:因此,對應(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í)可...

    LeviDing 評(píng)論0 收藏0
  • 分析 JDK 源碼

    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...

    godruoyi 評(píng)論0 收藏0
  • 深入研究Java String

    摘要:所以我決定先從類入手,深入的研究一番來開個(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吃飯,還是得花些心思在上...

    番茄西紅柿 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<