国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JAVA String 源碼分析與final關鍵字

NickZhou / 3276人閱讀

摘要:關鍵字在聲明一個對象時有兩種用法,第一種,在使用這個類的時候聲明,就像這樣不合法可以向對象加數據。第二種,在定義這個類的時候使用關鍵字比如這種他僅僅表示不能被繼承。因此,定義類使用關鍵字與在類中間聲明一個是對象成員變量是的作用是不一樣。

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

javapublic class Day01 {
    private static final List Loans = new ArrayList();
    public static void main(String[] args) {
    Loans.add("xxx");
        Loans = new Vector(); //不合法
    }
}

可以向對象加數據。但是不能使他的引用指向另外一個對象。
第二種,在定義這個類的時候使用final關鍵字:
比如這種:

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關鍵字與在類中間聲明一個是對象成員變量是final的作用是不一樣。

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64346.html

相關文章

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

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

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

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

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

    Object 相關概念 Object 是 java 中的頂級父類,它是所有類的超類,所有對象以及數組均會實現這個類提供的方法 JVM 在編譯源碼過程中,遇到沒有繼承 Object 的對象時,編譯器會指定默認父類 Object 接口沒有繼承頂級父類,但會隱式的聲明一套和 Object 中的方法簽名完全一樣的方法,這也就符合萬物皆對象的面向對象思想,任何對象直接或間接的跟 Object 對象有關 O...

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

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

    番茄西紅柿 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<