成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

NickZhou / 3323人閱讀

摘要:關(guān)鍵字在聲明一個對象時有兩種用法,第一種,在使用這個類的時候聲明,就像這樣不合法可以向?qū)ο蠹訑?shù)據(jù)。第二種,在定義這個類的時候使用關(guān)鍵字比如這種他僅僅表示不能被繼承。因此,定義類使用關(guān)鍵字與在類中間聲明一個是對象成員變量是的作用是不一樣。

String不可變的是參考這里。
http://www.2cto.com/kf/201401/272974.html
String 不可變得一個重要原因是因為String被聲明成了final類,但是觀察Stringbuffer也被聲明成了final類。所以,String 不可變得原因不是因為其在聲明的時候聲明生了final,而是在各種方法的內(nèi)部都是return了一個新的對象,所以String是不可修改的。
final關(guān)鍵字在聲明一個對象時有兩種用法,第一種,在使用這個類的時候聲明,就像這樣:

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ù)。但是不能使他的引用指向另外一個對象。
第二種,在定義這個類的時候使用final關(guān)鍵字:
比如這種:

javapublic final class String{

}

他僅僅表示不能被繼承。但是他的引用依然能夠指向其他的對象:

java    String   a="ccc";
     a="bbbb";

一個例子:

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");
    }

}

在定義類的時候聲明這個類是final的,但是它的引用依然可以指向別的對象。因此,定義類使用final關(guān)鍵字與在類中間聲明一個是對象成員變量是final的作用是不一樣。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/64346.html

相關(guān)文章

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

    摘要:作為條件變量的的不僅可以認(rèn)為內(nèi)嵌了一把鎖,還內(nèi)嵌了一個條件變量。操作條件變量的函數(shù)將當(dāng)前線程在條件變量上阻塞,一般是為了等待其他線程的某件事情執(zhí)行完成。其它裝箱類其它裝箱類的代碼這里就不分析了。重點關(guān)注下各裝箱類的緩存范圍。 jdk源碼讀到現(xiàn)在這里,重要的集合類也讀了一部分了。集合類再往下讀的話,就要涉及到兩個方向。第一,是比較典型的但是不常用的數(shù)據(jù)結(jié)構(gòu),這部分我準(zhǔn)備將數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)、回...

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

    摘要:因此,對應(yīng)地我們可以翻譯這段二進(jìn)制字節(jié)碼為這樣的代碼注意,這段代碼并不能通過編譯,因為源碼這一層是不允許直接繼承的,這個繼承過程只允許在編譯器內(nèi)部解語法糖的過程中被編譯器添加,添加之后的類才會有的訪問標(biāo)識符。 語法糖(Syntactic Sugar)的出現(xiàn)是為了降低我們編寫某些代碼時陷入的重復(fù)或繁瑣,這使得我們使用語法糖后可以寫出簡明而優(yōu)雅的代碼。在Java中不加工的語法糖代碼運行時可...

    LeviDing 評論0 收藏0
  • 分析 JDK 源碼

    Object 相關(guān)概念 Object 是 java 中的頂級父類,它是所有類的超類,所有對象以及數(shù)組均會實現(xiàn)這個類提供的方法 JVM 在編譯源碼過程中,遇到?jīng)]有繼承 Object 的對象時,編譯器會指定默認(rèn)父類 Object 接口沒有繼承頂級父類,但會隱式的聲明一套和 Object 中的方法簽名完全一樣的方法,這也就符合萬物皆對象的面向?qū)ο笏枷耄魏螌ο笾苯踊蜷g接的跟 Object 對象有關(guān) O...

    godruoyi 評論0 收藏0
  • 深入研究Java String

    摘要:所以我決定先從類入手,深入的研究一番來開個好頭。之所以會有以上的效果,是因為有字符串常量池的存在。同時運行時實例創(chuàng)建的全局字符串常量池中有一個表,總是為池中的每個字符串對象維護(hù)一個引用,所以這些對象不會被。 開始寫 Java 一年來,一直都是遇到什么問題再去解決,還沒有主動的深入的去學(xué)習(xí)過 Java 語言的特性和深入閱讀 JDK 的源碼。既然決定今后靠 Java吃飯,還是得花些心思在上...

    番茄西紅柿 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<