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

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

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

    Rising Sun

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

    棧內存

    堆內存

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

    由new創(chuàng)建的對象和數(shù)組,

    存取速度快

    相對于棧內存較慢

    數(shù)據(jù)大小聲明周期必須確定

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

    共享特性

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

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

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

    創(chuàng)建之后值可以改變

    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";它會在棧中創(chuàng)建一個變量為str1的引用,然后查找棧中是否有abc這個值,如果沒找到,就將abc存放進來,然后將str1指向abc。

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

    二、堆內存

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

      要注意: 我們在使用諸如String str = "abc";的格式定義類時,總是想當然地認為,創(chuàng)建了String類的對象str。擔心陷阱!對象可能并沒有被創(chuàng)建!而可能只是指向一個先前已經創(chuàng)建的 對象。只有通過new()方法才能保證每次都創(chuàng)建一個新的對象。 由于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)

    將此字符串與指定的對象比較。當且僅當該參數(shù)不為 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 閱讀(4182) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 99精品全国免费观看视频..| 免费H网站在线观看的| 亚洲av无码乱码国产精品| 手机看黄av免费网址| 激情婷婷成人亚洲综合| 亚洲成AV人片在| 在线免费观看一区二区三区| 狠狠躁狠狠爱免费视频无码| 亚洲人成人77777网站不卡| 亚洲Av无码乱码在线观看性色| 99re免费99re在线视频手机版| 久久久久亚洲精品无码网址色欲 | 亚洲午夜福利AV一区二区无码| 久久青草91免费观看| 美女露隐私全部免费直播| 久久亚洲精品国产精品| 免费在线观看黄网站| 精品无码免费专区毛片| 精品国产呦系列在线观看免费| 亚洲高清有码中文字| 亚洲Av综合色区无码专区桃色| 免费很黄很色裸乳在线观看| 亚洲一区免费视频| a国产成人免费视频| 香港经典a毛片免费观看看| 亚洲另类自拍丝袜第1页| 亚洲一区二区三区AV无码| 在线播放免费播放av片| 91福利免费视频| 最近免费字幕中文大全| 特级毛片全部免费播放a一级| 亚洲国产中文在线视频 | WWW国产亚洲精品久久麻豆| 久久久久亚洲av无码专区导航| 亚洲国产精品毛片av不卡在线| 成年女人色毛片免费看| 在线看片韩国免费人成视频| 18禁在线无遮挡免费观看网站| 一级特黄a免费大片| 日本亚洲高清乱码中文在线观看 | aⅴ免费在线观看|