轉義字符
所有的轉義字符都是由 '' 打頭的
第二個字符
0-9 :八進制
u :是Unicode轉意,長度固定為6位
Other:則為以下字母中的一個 b,t,n,f,r,",
都不滿足,則產生一個編譯錯誤。
當然了,提供八進制也是為了和C語言兼容.
b,t,n,f,r 則是為控制字符.書上的意思為:描述數據流的發送者希望那些信息如何被格式化或者被表示.
Unicode轉義字符非常有趣
它可以寫在代碼的任意位置,只要轉義後是合法的.
例如:
int c=0u003b
上面的代碼可以編譯通過,等同於int c=0; u003b也就是';'的Unicode代碼
上面的例子不能讓人很信服,所以特地寫了下面這一段代碼用來將字符串轉換成為unicode字符
然後你可以將打印出來的代碼放置在EggHello.Java中,然後運行它,結果是讓人激動的。
/*
* author:雞蛋 date:2004/11/10 字符串轉換為Unicode
*/
public class Asc2Unicode {
private StringBuffer ch;
private StringBuffer tch;
Asc2Unicode(StringBuffer s) {
ch = s;
if (ch.length() > 0)
tch = new StringBuffer(1000);
}
void transform() {
if (ch.length() < 1)
return;
for (int i = 0; i < ch.length(); i++) {
(new Integer((int) ch.charAt(0))).toString();
tch.append(new StringBuffer("u00"));
tch.append(new StringBuffer(new String(Integer.toHexString((int) ch
.charAt(i)))));
}
}
StringBuffer getStr() {
return tch;
}
public static void main(String[] argv) {
Asc2Unicode au = new Asc2Unicode(new StringBuffer(new String(
"public class EggHello{"
+ " public static void main(String[] argv){"
+ "System.out.println("Hello,World");" + "}" + "}"
)
));
au.transform();
System.out.println(au.getStr());
}
}
打印如下:
u0070u0075u0062u006cu0069u0063u0020u0063u006cu0061u0073u0073u0020u0045u0067u0067u0048u0065u006cu006cu006fu007bu0020u0020u0020u0070u0075u0062u006cu0069u0063u0020u0073u0074u0061u0074u0069u0063u0020u0076u006fu0069u0064u0020u006du0061u0069u006eu0028u0053u0074u0072u0069u006eu0067u005bu005du0020u0061u0072u0067u0076u0029u007bu0053u0079u0073u0074u0065u006du002eu006fu0075u0074u002eu0070u0072u0069u006eu0074u006cu006eu0028u0022u0048u0065u006cu006cu006fu002cu0057u006fu0072u006cu0064u0022u0029u003bu007du007d
感覺有點像加密的代碼一樣! 當然那都是掩耳盜鈴。。。
不過初看起來還是比較讓人頭暈的。
Unicode轉義就先研究到這裡,喝點水,打會游戲。。。