推薦淘寶秋冬男裝熱賣網店

          追求無止境

          我的程序人生
          隨筆 - 31, 文章 - 2, 評論 - 20, 引用 - 0
          數據加載中……

          一個簡單的小測驗,考查一下對Java基礎的掌握情況

          今天看Java Language Specification的時候看到了下面的一段代碼:
          package testPackage;
          class Test {
          public static void main(String[] args) {
          String hello 
          = "Hello", lo = "lo";
          System.out.print((hello 
          == "Hello"+ " ");
          System.out.print((Other.hello 
          == hello) + " ");
          System.out.print((other.Other.hello 
          == hello) + " ");
          System.out.print((hello 
          == ("Hel"+"lo")) + " ");
          System.out.print((hello 
          == ("Hel"+lo)) + " ");
          System.out.println(hello 
          == ("Hel"+lo).intern());
          }

          }

          class Other static String hello = "Hello"; }


          package other;
          public class Other static String hello = "Hello"; }



          輸出的結果出人預料。不運行它,大家自己想想答案吧,然后把答案和你的想法貼出來分享給大家吧。
          正確答案的話,運行一下運行一下就知道了。。

          posted on 2009-08-11 09:39 追求無止境 閱讀(1536) 評論(8)  編輯  收藏

          評論

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況  回復  更多評論   

          不錯啊
          2009-08-11 09:52 | 99讀書人

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況  回復  更多評論   

          編譯不通過。不同包非子父類關系之間的訪問成員變量應該用public修飾符
          2009-08-11 10:04 | 申澤

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況  回復  更多評論   

          the field other.Other.hello is not visible.

          1. 字符串會放在常量池中,也就是會緩沖起來
          2. 編譯時會優化,例如 "Hel"+"lo" 在編譯時會優化為 "Hellol",而帶變量的 "Hel"+lo,就只能用 StringBuffer 或 StringBuilder 來連接了,并創建新的字符串對象。
          3. 但對于兩個 new String("Hello"), new String("Hello") 就不會是同一個對象了,但它們的 intern() 是一樣的。
          2009-08-11 10:07 | 隔葉黃鶯

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況  回復  更多評論   

          @ 申澤
          注意,上面有兩個類文件。需要放在不同的包中才行。
          2009-08-11 10:22 | 追求無止境

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況  回復  更多評論   

          @隔葉黃鶯
          兄弟的java學的不錯。牛。。弓雖。。
          2009-08-11 10:24 | 追求無止境

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況  回復  更多評論   

          String hello = "Hello", lo = "lo";
          System.out.print((hello == "Hello") + "
          System.out.print((Other.hello == hello) + " ");
          System.out.print((other.Other.hello == hello) + " ");
          System.out.print((hello == ("Hel"+"lo")) + " ");
          System.out.print((hello == ("Hel"+lo)) + " ");
          System.out.println(hello == ("Hel"+lo).intern());

          挨個給解釋以下,初學者
          2009-08-11 17:05 | 初學者

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況[未登錄]  回復  更多評論   

          這個沒有什么意思.

          javap -verbose 看一下就知道了.
          2009-08-11 18:51 | wonder

          # re: 一個簡單的小測驗,考查一下對Java基礎的掌握情況  回復  更多評論   

          學習技術?。?
          2009-08-12 12:31 | 移動12530彩鈴

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


          網站導航:
           
          主站蜘蛛池模板: 襄垣县| 嘉义市| 瓦房店市| 长垣县| 利辛县| 库车县| 祁门县| 余江县| 乌审旗| 伊春市| 莱西市| 天长市| 鹿泉市| 渝中区| 昌邑市| 左云县| 贺州市| 永吉县| 永善县| 固阳县| 宣武区| 山东省| 通渭县| 广德县| 徐闻县| 麦盖提县| 内乡县| 兰州市| 类乌齐县| 承德县| 临漳县| 苗栗市| 巴楚县| 鹤庆县| 韩城市| 惠东县| 义乌市| 孝义市| 图木舒克市| 山西省| 临洮县|