itVincent Blog - Java Working Fun!

          技術引領時代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12

          在CSDN上看到個關于String的問題

          Posted on 2006-12-04 10:22 itVincent 閱讀(550) 評論(1)  編輯  收藏 所屬分類: Java基礎

          在CSDN上看到個String的問題,趁機會自己總結一下,問題是這樣的:
          String a = "JAVA";
          String b = "JAVA";
          String c = new String("JAVA");
          String d = "JA";
          String e = "VA";
          String f = "JA"+"VA";
          String g = d+e;
          String h = c;
          System.out.println(a==b);//TRUE
          System.out.println(a==c);//FALSE
          System.out.println(a==f);//TRUE
          System.out.println(a==g);//FALSE
          System.out.println(c==f);//FALSE
          System.out.println(c==g);//FALSE
          System.out.println(c==h);//TRUE
          //為什么a==g是FALSE呢?

          下面逐一的說:

          System.out.println(a==b);//TRUE?? 通過String str=""這種方式獲得的相同內容的String指向同一個intern對象,不會重復創建新的對象
          ??????
          System.out.println(a==c);//FALSE? 通過new String()方式生成的是一個新的對象,可通過intern()方法指向同一個intern對象

          System.out.println(a==f);//TRUE??? ?"JA"+"VA";會在編譯期換為"JAVA"

          System.out.println(a==g);//FALSE d+e后,是新的String了,不會在編譯期完成
          System.out.println(c==f);//FALSE 這個很簡單,地球人都知道
          System.out.println(c==g);//FALSE 這個很簡單,地球人都知道
          System.out.println(c==h);//TRUE 這個很簡單,地球人都知道

          ?

          Feedback

          # re: 在CSDN上看到個關于String的問題  回復  更多評論   

          2008-10-17 23:15 by 楊愛友
          不錯,這段程序描述出了string類型對象創建及存儲的特點,是面試官問的頻率最高的題目,我曾幾次栽倒在這里。
          主站蜘蛛池模板: 大渡口区| 朝阳区| 双流县| 建宁县| 青神县| 太仆寺旗| 锡林浩特市| 石楼县| 临潭县| 延寿县| 宜良县| 甘德县| 固安县| 吉安县| 钦州市| 合山市| 阳西县| 玉林市| 梧州市| 惠来县| 株洲县| 三亚市| 潍坊市| 乌海市| 尼玛县| 蕉岭县| 五河县| 邢台县| 耒阳市| 汾阳市| 长寿区| 鸡西市| 儋州市| 南和县| 肇州县| 修武县| 察雅县| 融水| 东乌珠穆沁旗| 城固县| 吐鲁番市|