來(lái)個(gè)兩個(gè)有趣的例子:
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");
}
}
上面這個(gè)例子能運行嗎?你確定嗎?是的,我確定,這個(gè)例子可以完全正常地運行。為什么?這個(gè)例子等價(jià)于:
public class BrowserTest {
public static void main(String[] args) {
System.out.print("iexplore:");
http:
//www.google.com;
System.out.println(":maximize");
}
}
哈哈,http只是作為標簽(label),因為JAVA沒(méi)有g(shù)oto語(yǔ)句,它是通過(guò)label和continue語(yǔ)句來(lái)模擬的。而//www.google.com;只是注釋。我第一次看見(jiàn)這個(gè)例子的時(shí)候也被搞混了。
2。完全用UNICODE表示的程序:請把下面這段“代碼”放進(jìn)一個(gè)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??纯聪旅孢@個(gè)例子,打印什么?
public class LastLaugh {
public static void main(String args[]) {
System.out.print("H" + "a");
System.out.print(‘H‘ + ‘a(chǎn)‘);
}
}
哈?下半聲我笑不出來(lái)了,打印出來(lái)的是Ha169。道理很簡(jiǎn)單,+號只對String 類(lèi)型做了重載,而char類(lèi)型沒(méi)有,所以第2個(gè)輸出語(yǔ)句其實(shí)是把char轉為int,再進(jìn)行+操作,即72+97。解決此問(wèn)題可以在前面加個(gè)空字符串:
System.out.print(""+‘H‘ + ‘a(chǎn)‘);
或者JDK5中使用printf,System.out.printf("%c%c",‘H‘,‘a(chǎn)‘);
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) + " ");
}
}
你可能以為會(huì )打印從0到255,可惜結果卻不一定,這依賴(lài)于你的平臺的缺省字符集。我的機器上默認是GBK,這個(gè)程序只有在字符集是ISO-8859-1時(shí)才可以,所以可以改成:
String str = new String(bytes,"ISO-8859-1");
平臺的默認字符串在JDK5中使用java.nio.charset.Charset.defaultCharset()來(lái)查詢(xún)。
5。另一個(gè)需要注意的是String的replaceAll的方法第一個(gè)參數是正則表達式,而不是常量字符串。你可以使用String的replace方法來(lái)替代。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=704572
聯(lián)系客服