我们都知道,java中被注释部分的代码是不会被执行的。但是你这样处理,注释部分的代码确确实实的被执行了,你还真别不信,下面我们就来试试看!

话不多说,直接上代码片段。
public class Code {
public static void main(String[] args) {
String name = "haHa";
// \u000d name="heHe";
System.out.println(name);
}
}
我相信大多数人都相信,这个程序输出的结果不就是haHa嘛,毋庸置疑的。然后咱们去Idea上跑一下,结果居然是:

然后,你没有看错,程序打印输出的是heHe,学了这么多年了的JAVA,是不是感觉很意外呢!


至于为什么不是打印输出 haHa ,而是打印输出了 heHe ,这还得从 Unicode 字符编码说起。\u000d这个东西可能我们都没有见过,也不知道是什么东西,不知道没关系我们可以去问度娘。之后我们得知,\u000d这个字符代表的意思就是换行。
我们都知道,Java 编译器不仅会编译代码,还会解析 Unicode 字符。Java 源代码是被允许包含 Unicode 字符,这样的话,就可以确保在世界上任何一个区域编写的代码在其他地方执行。
根据上面的分析,上述代码片,就等价于下面这个代码片:
public class Code {
public static void main(String[] args) {
String name = "haHa";
//
name="heHe";
System.out.println(name);
}
}
看到这里,我相信很多小伙伴都知道了,为什么这个程序会输出heHe,而不是输出haHa了。
最后,点个关注再走吧!

探索Java中一个令人惊讶的现象:看似被注释掉的代码实际上仍能被执行。通过理解Unicode字符u000d的含义,揭示了Java编译器如何解析Unicode,以及这如何影响代码执行。
4099

被折叠的 条评论
为什么被折叠?



