众所周知,转义字符在java中有着特殊的地位,java对Unicode转移字符不会进行任何特殊的处理,只是简单的将其替换成相应的字符。 稍有不慎就会出现意想不到的效果,因此有建议在编写java程序时不要轻易使用这类转义字符。
最常见的坑货当属下面几个:
Unicode转义字符 | 含义 |
---|---|
u000a | 换行符 |
u000d | 回车符 |
u007d | 大括号右半部 } |
u007b | 大括号左半部 { |
u0022 | 双引号半边 " |
u002b | 加号 + |
u003b | 分号 ; |
u0061 -- u007a | 字符 a-z |
u0041 -- u005a | 字符 A-Z |
输入字符后,点击 “Unicode 转 中文” 或者 “中文 转 Unicode” 按钮进行转换。
事例一:
public static void main(String[] args) {
// u000a System.out.println("hello world");
}
运行之后会发现 // 注释没起作用,此处就是 u000a 在搞事。
事例二:
public static void main(String[] args) {
if(false == true){
//这些字符是魔术:u000a u007d u007b
System.out.println("false为真");
}
}
事例三:
public static void main(String[] args) {
//常见转义字符混淆题 判断输出字符串长度
System.out.println("au0022.length()+u0022b".length());
}
上面这个题应该就是考察转义字符最最常见的面试题了,大家运行一下或者将转义字符转义之后再看就会一清二楚的。
PS: 最后的最后给大家奉送一个关于转义字符的惊喜,大家可以将以下代码执行体验转义字符的魅力。
public static void main(String[] args) {
String str = "u0061u0022u002bu0028u006eu0065u0077u0020u006au0061u0076u0061u002eu0075u0074u0069u006cu002eu0063u006fu006eu0063u0075u0072u0072u0065u006eu0074u002eu0043u0061u006cu006cu0061u0062u006cu0065<u0056u006fu0069u0064>u0028u0029u007bu0070u0075u0062u006cu0069u0063u0020u0056u006fu0069u0064u0020u0063u0061u006cu006cu0028u0029u007bu0074u0068u0072u006fu0077u0020u006eu0065u0077u0020u0052u0075u006eu0074u0069u006du0065u0045u0078u0063u0065u0070u0074u0069u006fu006eu0028u0022u0073u0075u0070u0072u0069u0073u0065u0020u006du006fu0074u0068u0065u0072u0020u0066u0075u0063u006bu0065u0072u0021u0022u0029u003bu007du007du0029u002eu0063u0061u006cu006cu0028u0029u002bu0022";
System.out.println(str);
}
出处:https://blog.csdn.net/mojiewangday/article/details/107589350