<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks

    棧內存

    堆內存

    基礎類型,對象引用(堆內存地址

    由new創建的對象和數組,

    存取速度快

    相對于棧內存較慢

    數據大小聲明周期必須確定

    分配的內存由java虛擬機自動垃圾回收器管理。動態分配內存大小

    共享特性

    棧中如果有字符串,則直接引用

    如果沒有,開辟新的空間存入值

    每new一次在堆內存中生成一個新的對象。

    創建之后值可以改變

    String類聲明后則不可改變    

    一、棧內存

    基礎類型int, short, long, byte, float, double, boolean, char和對象引用

    棧的共享特性

    String str1 = "abc";
    String str2 = "abc";
    System.out.println(str1==str2); //true

    1、編譯器先處理String str1 = "abc";它會在棧中創建一個變量為str1的引用,然后查找棧中是否有abc這個值,如果沒找到,就將abc存放進來,然后將str1指向abc。

    2、   接著處理String str2 = "abc";在創建完b的引用變量后,因為在棧中已經有abc這個值,便將str2直接指向abc。這樣,就出現了str1與str2同時均指向abc的情況。

    二、堆內存

    new、newarray、anewarray和multianewarray等指令建立

      要注意: 我們在使用諸如String str = "abc";的格式定義類時,總是想當然地認為,創建了String類的對象str。擔心陷阱!對象可能并沒有被創建!而可能只是指向一個先前已經創建的 對象。只有通過new()方法才能保證每次都創建一個新的對象。 由于String類的immutable性質,當String變量需要經常變換其值時,應該考慮使用StringBuffer類,以提高程序效率。

    三、  ==   內存地址比對

    String str1 = "abc";
    String str2 = "abc";
    System.out.println(str1==str2); //true    str1
    和str2同時指向 棧內存 中同一個內存空間

    String str3 = "abc";
    String str4 = new String("abc") ;

    System.out.println(str3 == str4);    //flase str3值在棧內存中,str4值在堆內存中

    String hello = "hello" ;

    String hel = "hel" ;

    String lo = "lo" ;

    System.out.println(hello == "hel" + "lo") ; //true

    //兩個常量相加,先檢測棧內存中是否有hello如有有,指向已有的棧中的hello空間

    System.out.println(hello == "hel" + lo) ;   //flase

    System.out.println(hello == hel + lo) ;     //flase

     //lo是在常量池中,不檢查棧內存,在堆中產生一個新的hello

     四、  equals  值進行比對

     public boolean equals(Object anObject)

    將此字符串與指定的對象比較。當且僅當該參數不為 null,并且是與此對象表示相同字符序列的 String 對象時,結果才為 true。

     String str5 = "abc";
    String str6 = new String("abc") ;

    System.out.println(str5.equals(str6));    //true   str5的值str6的值比對

     五、  intern    棧中值的內存地址

    Public String intern()

    當調用 intern 方法時

    1、如果池已經包含一個等于此 String 對象的字符串(用equals(Object) 方法確定),則返回池中的字符串。

    2、將此 String 對象添加到池中,并返回此 String 對象的引用。

    String s7 = new String("abc") ;

    String s8 = "abc" ;

    System.out.println(s7 == s7.intern()) ;//flase

    System.out.println(s8 == s7.intern() );//true

    1.檢查棧內存中有沒有abc對象如果有

    2.將s7指向pool中abc

    posted on 2011-03-24 16:58 brock 閱讀(4181) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 牛牛在线精品免费视频观看| 亚洲大香伊人蕉在人依线| 亚洲a∨无码一区二区| 天天看免费高清影视| 最新亚洲春色Av无码专区| 免费精品国产自产拍在线观看图片| 久久国产亚洲精品无码| 91人人区免费区人人| 亚洲色图校园春色| 国产黄色免费网站| 日本亚洲精品色婷婷在线影院| 黄页免费的网站勿入免费直接进入| 亚洲乱码一二三四区国产| 成熟女人牲交片免费观看视频 | 亚洲亚洲人成综合网络| 国产永久免费高清在线| 久久久亚洲精品无码| 亚洲一区二区免费视频| 亚洲日韩精品无码AV海量| 又黄又爽的视频免费看| 国产日韩AV免费无码一区二区| 亚洲一本综合久久| 91情侣在线精品国产免费| MM1313亚洲国产精品| 亚洲Av永久无码精品三区在线| 一本色道久久88亚洲综合 | 日本在线免费播放| 亚洲18在线天美| 亚洲成A人片在线观看无码3D| 巨胸喷奶水视频www免费视频| 亚洲欧洲日产国产综合网| 最近中文字幕mv免费高清视频7 | 老司机69精品成免费视频| 亚洲综合色7777情网站777| 伊人久久亚洲综合影院| 色欲国产麻豆一精品一AV一免费| 亚洲精品中文字幕无乱码麻豆| 免费在线视频一区| 亚洲人成免费电影| 国产成人无码精品久久久免费 | 亚洲精品成人久久|