Java 最坑爹的 10 大功能点!

云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

作为一门面向对象的编程语言,Java凭借其简单易用、功能强大的特点受到了广大编程爱好者的青睐,伴随着开源社区的推波助澜,Java语言更是席卷全球,势不* W $ x x q * -可挡,在世界各地都有Java技术的从业者,它也常年高居编程语言排行榜的首位,足以表] P N l H m o明Java的强悍与王者之风。
然而,即便是如6 ~ Z 5 V q [ ~ ;此强大的编程语言,也有很多“坑爹”的功能,稍不注意,我们就会掉入坑里,轻则遭到同事的嘲笑和鄙视,重则造成悲惨后L v t果而不得不跑路。

当然,坑爹这个词加上了双引t ! r t }号,因为大部分时候,都是由于我们不够熟练、违反我们的常识才造成了令人不愉快的后果。
今天我们就来梳理一下Java中最“坑爹”、最违反常识的功能点,以排行榜的方式发布,以飨读者。说明一下,本文中的代码基于JD` P s 2 ` 9 h K8来编译实现。

1、switch必须加上breat h g pk才结束

对于多重分支选择,一系列的if-else-if语句会让代码的可读性变差,o z = f D , V ;建议使用sz ( O ~ t 1 ) =witch语句来c * : ( g K e代替,然g G 9 v j a L a x而switch case中的分支判断,必须加上break语句才会中止其它case的执行,比如:

Java 最坑爹的 10 大功能点!

然而,这并不是我们想要的,或者说违反了我们的常识。满足了某种条件,当然就只需要执行这种条件下的逻辑即可,其他的case应该不予理会、直接跳过,象上面这段代码,只需要输出one就行了。

当然,在每个case结尾处加上break就可以达到我们期望的效果。Java 12 骚 switch 居然还能这样玩,推荐看下这篇。
这个功能点稍显“坑爹”,也是初学者常犯的错误,所以它也光荣上榜,排名第10位。

2、逻辑运算符的“短路”现象

使用逻辑运算符时,我们会遇到“短路”的现象:一旦能够确定整个表达式的值,就不会计算余下的部分了,当然,这个功能点其实是非常有用的,但对于初学k V ^ p 1者来说,可能会感觉比较惊讶,使用不当就会产生“坑爹”后果。比如下s N ] V 1 G l b A面的代码:

Java 最坑爹的 10 大功能点!

就会输出l T R ! 2 + O /false和1,因为逻辑与&&a@ / S ;mp;的前半部分为false,不管后半部分为true还是false,整个表达式都会返回false,所以就不会再计算后面的部分了,如果把false改成true,那么后半部分就会得到执行,num也就变成2了。
它在“坑爹”榜单中位列第9位。

3、数组下标从零开始

Java程序员都清楚,数组的下标是从零开始的,比如,我们要遍历一个数组,可以采用如下的方式:

Java 最坑爹的 10 大功能点!

我们知道,charAt的作用是获取字符串中某个位置的字符,然而,上面的代码并不是输出第一个字符h,而是e,因为数组是从零开始计数的,这个也是比较“坑c s D . J ]爹”啊。5 k o o 2 e V :当然,设计者这么y v W 4 H | V Y *做的原因是考虑到了内存偏移量的因素。
每次在编写这样的代码时,都需要做这样的1到0的映射和转换(熟练了就是下意识的转换),确实也有点“坑爹”,所以它也不能幸免,排在第8位。

4、ArrayList遍历删除时报错

Talk is cheap,先上代码:

Java 最坑爹的 10 大功能点!

当然| E - 8,这种方法也存在问题,建议使用迭代器的方式来删除元素。ArrayList 增删千万不要乱用…推荐看一下这篇。
对于不太熟练的程序S A i员来说,有时候就会掉入这样的陷阱之中。这是排名第7的情况。关注微信公众号:互联网架构4 _ c D h : |师,在后台回复:2T,可以获取架构师干货。

5、字符转成数字的坑

有时候,我们想把字符直接通过类型转换变成整数,比如像下面这样:

Java 最坑爹的 10 大功能点!

7、Integer类有缓存
这个功# o G 4能点也是面试的高频热t ) `点之一,稍不注意,也有可能被带入沟里,我们看看下面这段代码:

Java 最坑爹的 10 大功能点!

8、空方法体导致死循环
如果循环的方法体为空,则会导致死循环,比如,下面的代码打印出数字1,2,3:

Java 最坑爹的 10 大功能点!

上面的代码既不会输出102,也不会报错,而是输) W j # w * * o出2,这的确出乎意料,完全不是我们期望的结果,太神奇了,非常的“6 [ l M 1 4 G A坑爹”。
所以,它排名第2,稳居榜眼的位置。

10、Java注释能够识别Unicode
先看看代码:

Java 最坑爹的 10 大功能点!

乍一看,代码都被注释掉了,当然不] ( 9 O会输出任何东西d L + #,然而,它还K - V @ N %是输出每个程序员都倍感亲切的Hello World,这是因为,unicode解码发生在代码编译之前,编译器将u样式的代码进行文本转义,即使是注释也是这样,然后u000a被转换成n换行符,所以println代码得以正常执行。

这样的功能着实“坑爹”,极其违反常识,它必须要上榜,必须要荣登状元的位置。
以上就是Java语言中十大“坑S U @ R /爹”的功能点,你是. C | e O ` A C否认同这X 0 l _ & x t G A样的排名?你觉得有哪些功能更应该入选此榜单?欢迎后台留言讨论!

【云栖号在线课堂】每天都有产品技术专家S 6 g分享!
课程地址:https://yV A [ - Y ] Zqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了I v C b D / J a解课程最新X # r : J a o动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-02
本文作者: 践行精神自由
本文来自:“互联网架构师 微信公众号”,了解相关信息可以关注“互联网架构师”