免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java Puzzlers(2)字符串之謎

來個兩個有趣的例子:

1。URL的愚弄,難道SUN對google的待遇很特殊??

public class BrowserTest {
    public static void main(String[] args) {
        System.out.print("iexplore:");
        http://www.google.com;
        System.out.println(":maximize");
    }
}

上面這個例子能運行嗎?你確定嗎?是的,我確定,這個例子可以完全正常地運行。為什么?這個例子等價于:

public class BrowserTest {
    public static void main(String[] args) {
        System.out.print("iexplore:");
        http:

        //www.google.com;
        System.out.println(":maximize");
    }
}

哈哈,http只是作為標簽(label),因為JAVA沒有goto語句,它是通過label和continue語句來模擬的。而//www.google.com;只是注釋。我第一次看見這個例子的時候也被搞混了。

2。完全用UNICODE表示的程序:請把下面這段“代碼”放進一個Ugly.java的文件中,編譯運行即可,輸出老掉牙的Hello World。

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d

哈哈,是好玩,可苦了看程序的人,所以盡量避免使用轉義符吧。

3??纯聪旅孢@個例子,打印什么?

public class LastLaugh {
    public static void main(String args[]) {
        System.out.print("H" + "a");
        System.out.print(‘H‘ + ‘a‘);
    }
}
哈?下半聲我笑不出來了,打印出來的是Ha169。道理很簡單,+號只對String 類型做了重載,而char類型沒有,所以第2個輸出語句其實是把char轉為int,再進行+操作,即72+97。解決此問題可以在前面加個空字符串:

    System.out.print(""+‘H‘ + ‘a‘);

或者JDK5中使用printf,System.out.printf("%c%c",‘H‘,‘a‘);

 

4。字符串奶酪:

public class StringCheese {
    public static void main(String args[]) {
        byte bytes[] = new byte[256];   
        for(int i = 0; i < 256; i++)
            bytes[i] = (byte)i;
        String str = new String(bytes);
        for(int i = 0, n = str.length(); i < n; i++)
            System.out.print((int)str.charAt(i) + " ");
    }
}
你可能以為會打印從0到255,可惜結果卻不一定,這依賴于你的平臺的缺省字符集。我的機器上默認是GBK,這個程序只有在字符集是ISO-8859-1時才可以,所以可以改成:

String str = new String(bytes,"ISO-8859-1");

平臺的默認字符串在JDK5中使用java.nio.charset.Charset.defaultCharset()來查詢。

 

5。另一個需要注意的是String的replaceAll的方法第一個參數是正則表達式,而不是常量字符串。你可以使用String的replace方法來替代。

 




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=704572

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java 2 實用教程(第5版)耿祥義版 習題八
String&StringBuffer筆記
javaIO讀寫整理完整版及示例(各種方式代碼集合)
Java split用法
Java FAQ(新手必看)
關于第5章的全部習題答案總結?。。?- 《JAVA開發(fā)實戰(zhàn)經典》答疑專區(qū) - 魔樂MLDN java學習社區(qū)-魔樂科技 JAVA論壇|JAVA培訓論壇|MLDN論壇|MLDN社區(qū)|MLDN視頻下載 -JAVA學習論壇
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服