小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java Puzzlers(2)字符串之謎...

 ShangShujie 2007-05-03

來(lái)個(gè)兩個(gè)有趣的例子:

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

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

上面這個(gè)例子能運(yùn)行嗎?你確定嗎?是的,我確定,這個(gè)例子可以完全正常地運(yùn)行。為什么?這個(gè)例子等價(jià)于:

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

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

哈哈,http只是作為標(biāo)簽(label),因?yàn)镴AVA沒(méi)有g(shù)oto語(yǔ)句,它是通過(guò)label和continue語(yǔ)句來(lái)模擬的。而//www.google.com;只是注釋。我第一次看見(jiàn)這個(gè)例子的時(shí)候也被搞混了。

2。完全用UNICODE表示的程序:請(qǐng)把下面這段“代碼”放進(jìn)一個(gè)Ugly.java的文件中,編譯運(yùn)行即可,輸出老掉牙的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

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

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)單,+號(hào)只對(duì)String 類型做了重載,而char類型沒(méi)有,所以第2個(gè)輸出語(yǔ)句其實(shí)是把char轉(zhuǎn)為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,可惜結(jié)果卻不一定,這依賴于你的平臺(tái)的缺省字符集。我的機(jī)器上默認(rèn)是GBK,這個(gè)程序只有在字符集是ISO-8859-1時(shí)才可以,所以可以改成:

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

平臺(tái)的默認(rèn)字符串在JDK5中使用java.nio.charset.Charset.defaultCharset()來(lái)查詢。

 

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

 




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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多