posts - 14,  comments - 7,  trackbacks - 0
          答案是兩個,現在我們具體的說一下:
          String s = new String("abc");
          首先我們要明白兩個概念,引用變量和對象,對象一般通過new在堆中創建,s只是一個引用變量。
          所有的字符串都是String對象,由于字符串文字的大量使用,java中為了節省時間,在編譯階段,會把字符串文字放在文字池中,文字池的一個好處就是可以把相同的字符串合并,占用一個空間,我們可以用==判斷一下兩個引用變量是否指向了一個地址即一個對象
          public class Demo02 {
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  String s1 ="abc";
                  String s2 
          = "abc" ;
                  
          if( s1 == s2 ) System.out.println("s1,s2 refer to the same object");
                  
          else System.out.println("trouble");
              }

          }
          輸出結果為:
          可以看出指向了一個對象,即文字池中保存了一個對象。
          二、String s = new String("abc")實際上是"abc"本身就是文字池中的一個對象,在運行 new String()時,把文字池即pool中的字符串"abc"復制到堆中,并把這個對象的應用交給s,所以創建了兩個String對象,一個在pool中,一個在堆中。下面看這個程序,創建了幾個對象。
          public class Demo03 {
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  String s1 = new String("abc") ;
                  String s2 
          = new String("abc") ;
                  
          if( s1 == s2 )//不會執行的語句}
                 System.out.println("在堆中創建了一個對象");

              }

                  
          else{
                  System.out.println(
          "在堆中創建了兩個對象");    
                  }

                  }

          }
          輸出結果為:
          可知在堆中創建了兩個對象,但是在文字池中有一個對象,所以共創建了三個對象。
          三、再看下一個例子:
          public class Demo04 {
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  String s = new String("abc");
                  s 
          = "cba";
                  System.out.println(s); 
              }


          }
          輸出結果為:
          String s = new String("abc")并不是給s賦值,而是把字符串"abc"的引用交給s持有,現在把s指向字符串"cba","cba"的引用地址把"abc"的引用地址覆蓋,所以輸出結果為cba

          最后這個輸出結果的解釋,希望大家指出不足??!

          posted on 2010-10-18 14:32 迷人笑笑 閱讀(10656) 評論(0)  編輯  收藏

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


          網站導航:
           
          <2010年10月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(13)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 万载县| 吕梁市| 乡宁县| 西昌市| 东乡族自治县| 大新县| 九寨沟县| 定州市| 和平县| 怀远县| 赤水市| 九龙城区| 轮台县| 汶上县| 南川市| 天水市| 永吉县| 峡江县| 自治县| 泾阳县| 竹北市| 乌鲁木齐市| 嘉定区| 湖州市| 固阳县| 汽车| 沿河| 扶风县| 石首市| 沭阳县| 沛县| 永福县| 乌拉特后旗| 滦南县| 博白县| 莎车县| 星子县| 甘洛县| 舟曲县| 平潭县| 新宁县|