奇怪的不等于(≠)

最近,栈长用 IntelliJ IDEA 看源码时发现:

Java 中的 xx ≠ null 是什么新语法?_代码测试

咦~这是什么鬼?

Java 不等于的写法不是一直都是 != 么?什么时候可以写 了??

不科学啊~

以为我是老花眼了,认真看了几遍,觉得应该是 IDEA 的特效吧,然后去点那个符号,发现也还原不了原样。。。

然后互联网网冲浪了一翻,终于被我找到了这个开关:


Preferences > Editor > Reader Mode > Font ligatures


Java 中的 xx ≠ null 是什么新语法?_ide_02

Reader Mode: 用于只读模式的编辑器设置。

Font ligatures: ligatures 是 "绳索“、”绷带" 的意思,Font ligatures 不就是可以理解为 "字体绷带" 么,所以 != 被显示成 就不奇怪了。

取消这个开关后,再来看下上面的源码:

Java 中的 xx ≠ null 是什么新语法?_代码测试_03

终于恢复正常了,这样看得才舒服。。

Ligatures扩展

话说在源码中可以把 != 被显示成 ,那在正常的代码编辑器应该也能显示吧?

没错!!

栈长在设置菜单中根据 "ligatures" 搜索,发现有好几处设置 Font ligatures 的地方:

Java 中的 xx ≠ null 是什么新语法?_ide_04

然后打开这个选项:


Preferences > Editor > Font > Enable font ligatures


栈长随便写了些代码测试了下:

Java 中的 xx ≠ null 是什么新语法?_泛型_05

正常的代码编辑器也能显示!

从上面的测试代码可以看出,我加了个 >=,所以不仅限于不等于,更多的符号可以通过切换这个开关来看下。

关闭开关,原生显示:

Java 中的 xx ≠ null 是什么新语法?_ide_06

打开开关,代替显示:

Java 中的 xx ≠ null 是什么新语法?_ide_07

我现在再把测试代码复制出来:

public class Test {      public static void main(String[] args) {         int n = 1;         if (n != 0) {             System.out.println(1);         }         if (n >= 1) {             System.out.println(2);         }     } } 

可以看到,显示归显示,代码复制出来还是正常的语法的。

总结

好了,今天栈长给大家分享了 IDEA 的这个 Font Ligatures 开关,也不知道 IDEA 是在哪个版本中搞了这个默认开关,真是让人蛋疼。。

这个感觉就和 IDEA 中的智能显示如出一辙:

Java 中的 xx ≠ null 是什么新语法?_ide_08

如上所示,因为 Java 7 以上泛型类型能够自动推断,如果集合接口带了泛型,集合实现又带了泛型,那么集合实现的泛型会被折叠成 ~ 显示,鼠标放上去或者点击它就会显示原生代码,并且还能提示你集合实现中的泛型是多余的。

但是很无语,像不等于符号这种却不能点击/悬浮显示原生符号,需要一个硬开关。

总之,我觉得这个东西的存在根本就没鸟用,也不是很建议大家使用,最终我就默默地把所有的 Font Ligatures 开关都关闭了,不然会混淆视听。


--- EOF ---