如何把开发组长气的打人(Java中换行符的骚操作)

先上效果图:

在这里插入图片描述
可以看到,我们将代码注释掉之后,输出语句依旧执行,代码没有任何问题。

这里就涉及到了一个特殊字符:

 \u000d

大家可以将这个字符复制到注释后面,观察程序运行效果,发现注释掉的语句仍然可以正常执行!

所以这就有了很多骚操作

我这里先使用一个冒泡排序算法来代替项目中的代码逻辑:
在这里插入图片描述

1.我们可以将程序中的一些关键业务代码“注释”掉:
在这里插入图片描述
2.我们甚至可以将小括号大括号和关键字“注释”掉:
在这里插入图片描述
3.甚至连关键字,变量声明,特定的一些结构我们都可以“注释”掉:

在这里插入图片描述

4.类名方法名算什么,统统注释掉:
在这里插入图片描述

最后,来一张终极恶搞版:
在这里插入图片描述
这时有人说了:
哎呀你这个这么多错误,肯定运行不起来的啦,连上方运行按钮都叉掉了~

在这里插入图片描述
令人震惊的是,他确确实实是可以运行的~

这时又有人说:
哎呀这个你肯定是缓存了之前编译好的程序,执行的都是以前的拉~

那我们就在程序中改变几行代码,加几条输出语句
在这里插入图片描述
在这里插入图片描述

所以我们可以证明,即使程序看起来不像样子,但它真真正正的是可以运行的~

而且我们上述程序中,虽然被我们改的不成样子,但是其实我们并没有破换程序结构,如果破幻,是无法运行的!

我们随便写两句不符合规定的语句:
在这里插入图片描述
在这里插入图片描述
利用这一点,我们甚至可以将真正的注释破换成不符合规定的语句,混在程序代码中(滑稽):
在这里插入图片描述
有些注释,看似是注释,实则…呃~

解释一下原理:

说了这么多,我们这个字符为什么可以有这么大的魔力呢

我们经常可以在程序中看到以下注释:
在这里插入图片描述

其实这些注释就是我们所说的unicode编码,是文件保存编码不一致导致的!

而我们的:\u000d也是一个unicode编码,转换后为换行符!

所以…

其实Java在编译过程中是识别这些unicode编码的,并且编译这些unicode编码是会被识别的,即便它存在于注释之中…

所以我们上图中代码看似错误,实则为:
在这里插入图片描述
这样就能看明白了吧,代码看似混乱,实则没有一处编译错误,所以程序能正确执行啦!

滑稽:

鲁迅说过:如果程序员想要自己无法被替代,就写一些让别人无法维护的程序~
这个帖子估计会在这一点上帮助你很多~
在这里插入图片描述

最后说一句:被打了别找我~

猜你喜欢

转载自blog.csdn.net/qq_42628989/article/details/108599479