來個兩個有趣的例子:
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