天天看點

Java 最坑爹的 10 大功能點!

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

作為一門面向對象的程式設計語言,Java憑借其簡單易用、功能強大的特點受到了廣大程式設計愛好者的青睐,伴随着開源社群的推波助瀾,Java語言更是席卷全球,勢不可擋,在世界各地都有Java技術的從業者,它也常年高居程式設計語言排行榜的首位,足以表明Java的強悍與王者之風。

然而,即便是如此強大的程式設計語言,也有很多“坑爹”的功能,稍不注意,我們就會掉入坑裡,輕則遭到同僚的嘲笑和鄙視,重則造成悲慘後果而不得不跑路。

當然,坑爹這個詞加上了雙引号,因為大部分時候,都是由于我們不夠熟練、違反我們的常識才造成了令人不愉快的後果。

今天我們就來梳理一下Java中最“坑爹”、最違反常識的功能點,以排行榜的方式釋出,以飨讀者。說明一下,本文中的代碼基于JDK8來編譯實作。

1、switch必須加上break才結束

對于多重分支選擇,一系列的if-else-if語句會讓代碼的可讀性變差,建議使用switch語句來代替,然而switch case中的分支判斷,必須加上break語句才會中止其它case的執行,比如:

Java 最坑爹的 10 大功能點!

然而,這并不是我們想要的,或者說違反了我們的常識。滿足了某種條件,當然就隻需要執行這種條件下的邏輯即可,其他的case應該不予理會、直接跳過,象上面這段代碼,隻需要輸出one就行了。

當然,在每個case結尾處加上break就可以達到我們期望的效果。Java 12 騷 switch 居然還能這樣玩,推薦看下這篇。

這個功能點稍顯“坑爹”,也是初學者常犯的錯誤,是以它也光榮上榜,排名第10位。

2、邏輯運算符的“短路”現象

使用邏輯運算符時,我們會遇到“短路”的現象:一旦能夠确定整個表達式的值,就不會計算餘下的部分了,當然,這個功能點其實是非常有用的,但對于初學者來說,可能會感覺比較驚訝,使用不當就會産生“坑爹”後果。比如下面的代碼:

Java 最坑爹的 10 大功能點!

就會輸出false和1,因為邏輯與&&的前半部分為false,不管後半部分為true還是false,整個表達式都會傳回false,是以就不會再計算後面的部分了,如果把false改成true,那麼後半部分就會得到執行,num也就變成2了。

它在“坑爹”榜單中位列第9位。

3、數組下标從零開始

Java程式員都清楚,數組的下标是從零開始的,比如,我們要周遊一個數組,可以采用如下的方式:

Java 最坑爹的 10 大功能點!

我們知道,charAt的作用是擷取字元串中某個位置的字元,然而,上面的代碼并不是輸出第一個字元h,而是e,因為數組是從零開始計數的,這個也是比較“坑爹”啊。當然,設計者這麼做的原因是考慮到了記憶體偏移量的因素。

每次在編寫這樣的代碼時,都需要做這樣的1到0的映射和轉換(熟練了就是下意識的轉換),确實也有點“坑爹”,是以它也不能幸免,排在第8位。

4、ArrayList周遊删除時報錯

Talk is cheap,先上代碼:

Java 最坑爹的 10 大功能點!

當然,這種方法也存在問題,建議使用疊代器的方式來删除元素。ArrayList 增删千萬不要亂用…推薦看一下這篇。

對于不太熟練的程式員來說,有時候就會掉入這樣的陷阱之中。這是排名第7的情況。關注微信公衆号:網際網路架構師,在背景回複:2T,可以擷取架構師幹貨。

5、字元轉成數字的坑

有時候,我們想把字元直接通過類型轉換變成整數,比如像下面這樣:

Java 最坑爹的 10 大功能點!

7、Integer類有緩存

這個功能點也是面試的高頻熱點之一,稍不注意,也有可能被帶入溝裡,我們看看下面這段代碼:

Java 最坑爹的 10 大功能點!

8、空方法體導緻死循環

如果循環的方法體為空,則會導緻死循環,比如,下面的代碼列印出數字1,2,3:

Java 最坑爹的 10 大功能點!

上面的代碼既不會輸出102,也不會報錯,而是輸出2,這的确出乎意料,完全不是我們期望的結果,太神奇了,非常的“坑爹”。

是以,它排名第2,穩居榜眼的位置。

10、Java注釋能夠識别Unicode

先看看代碼:

Java 最坑爹的 10 大功能點!

乍一看,代碼都被注釋掉了,當然不會輸出任何東西,然而,它還是輸出每個程式員都倍感親切的Hello World,這是因為,unicode解碼發生在代碼編譯之前,編譯器将u樣式的代碼進行文本轉義,即使是注釋也是這樣,然後u000a被轉換成n換行符,是以println代碼得以正常執行。

這樣的功能着實“坑爹”,極其違反常識,它必須要上榜,必須要榮登狀元的位置。

以上就是Java語言中十大“坑爹”的功能點,你是否認同這樣的排名?你覺得有哪些功能更應該入選此榜單?歡迎背景留言讨論!

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-06-02

本文作者: 踐行精神自由

本文來自:“

網際網路架構師 微信公衆号

”,了解相關資訊可以關注“

網際網路架構師