神奇的Unicode换行符(\u000d)"/>
Java中神奇的Unicode换行符(\u000d)
Java中神奇的Unicode换行符(\u000d)
-
看到这个代码 你觉得会输出那个name?
package zuoye; public class demo { public static void main(String[] args) { String name = "张三"; //\u000dname="李四"; System.out.println(name); }
}
-
运行结果:
-
解释:看到这个结果,是不是有点懵逼了?明明 name = 李四 被注释了为什么最终执行输出的还是 李四 这个变量?
-
我们单纯从代码上看,问题应该就是出在那串特殊字符上
\u000d
,因为这代码里面没别的奇怪点了。\u000d
看上去就知道是一个Unicode字符,转换十进制以后发现它代表一个换行符!! -
那么这个时候答案就出来了,Java的编译器不仅会去编译代码, 也会去解析Unicode字符。
-
那么我们现在把那个代码修改为人看的懂的,首先
\u000d
==换行符,那么转换为代码就是。可以看的到\u000d
被转换为换行符,把 name="李四"; 挤到了 //(注释符) 的下一行,最终逃逸了 //(注释符) 影响了name的值。总结
-
Java的编译器不仅会去编译代码,也会去解析Unicode字符
-
更多推荐
Java中神奇的Unicode换行符(\u000d)
发布评论