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

          追求無止境

          我的程序人生
          隨筆 - 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 追求無止境 閱讀(1540) 評論(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彩鈴

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


          網站導航:
           
          主站蜘蛛池模板: 南投县| 汾阳市| 三明市| 道真| 中方县| 延寿县| 永靖县| 新巴尔虎左旗| 章丘市| 巴马| 静海县| 高清| 文水县| 丰县| 赞皇县| 中宁县| 交口县| 历史| 巩留县| 沾益县| 正阳县| 德惠市| 云南省| 延寿县| 永顺县| 镶黄旗| 罗江县| 桓台县| 会泽县| 曲周县| 成武县| 北辰区| 禹州市| 旺苍县| 庆阳市| 裕民县| 绥滨县| 无锡市| 政和县| 石台县| 温州市|