日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

一般编译器错误_Java程序员最容易犯的10个错误

發布時間:2025/6/17 java 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一般编译器错误_Java程序员最容易犯的10个错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

人非圣賢,孰能無過。都說Java語言是一門簡單的編程語言,基于C++演化而來,剔除了很多C++中的復雜特性,但這并不能保證Java程序員不會犯錯。

在開發 Java 軟件時可能會遇到許多類型的錯誤,但大多數可以避免。

本文根據java開發人員在編碼過程中容易忽視或經常出錯的地方進行了整理,總結出Java程序員最常犯的10大錯誤,具有一定的參考借鑒價值,需要的朋友可以參考下。

1 將 Array 轉換成 ArrayList 時出錯

一些開發者經常用這樣的代碼將 Array 轉換成 ArrayList:

Arrays.asList() 的返回值是一個 ArrayList 類的對象,這個 ArrayList 類是 Arrays 類里的一個私有靜態類(java.util.Arrays.ArrayList),并不是 java.util.ArrayList 類。

java.util.Arrays.ArrayList 有 set() / get() / contains() 方法,但是并不提供任何添加元素的方法,因此它的長度是固定的。如果你希望得到一個 java.util.ArrayList 類的實例,你應該這么做:

ArrayList 的構造函數可以接受一個 Collection 實例,而 Collection 是 java.util.Arrays.ArrayList 的超類。

2 檢查 array 里是否含有某個值時出錯

一些開發者會這么寫:

上面的代碼可以工作,但是其實沒必要把 list 轉為 set,這有些浪費時間,簡單的寫法是這樣的:

或者這樣的

這兩種寫法中,前者可讀性更好。

3 遍歷 list 移除元素時出錯

下面的代碼在迭代時移除了元素:

得到的結果是

這種代碼的問題在于,當元素被移除時,list 的長度也隨之變小了,index 也同時發生了變化。所以,如果你想要在循環中使用 index 移除多個元素,它可能不能正常工作。

你可能認為正確的方法是使用迭代器來刪除元素,比如 foreach 循環看起來就是一個迭代器,其實這樣還是有問題。

考慮以下代碼(代碼 1):

會拋出 ConcurrentModificationException 異常。

要正確地在遍歷時刪除元素,應該這么寫(代碼 2):

你必須在每次循環里先調用 .next() 再調用 .remove()。

在代碼 1 中的 foreach 循環中,編譯器會在元素的刪除操作之后調用 .next(),導致 ConcurrentModificationException 異常,如果你想深入了解,可以看看 ArrayList.iterator() 的源碼。

4 用 Hashtable 還是用 HashMap

一般來說,算法中的 Hashtable 是一種常見的數據結構的名字。但是在 Java 中,這種數據結構的名字卻是 HashMap,不是 Hashtable。Java 中 Hashtable 和 HashMap 的最重要的區別之一是 Hashtable 是同步的(synchronized)。因此大部分時候你不需要用 Hashtable,應該用 HashMap。

5 直接使用 Collection 的原始類型時出錯

在 Java 中,「原始類型」和「無限制通配符類型」很容易被搞混。舉例來說,Set 是一個原始類型,而 Set 是一個無限制通配符類型。

下面的代碼中的 add 接受原始類型 List 作為參數:

這個代碼會在運行時才拋出異常:

使用原始類型的 collection 是很危險的,因為原始類型沒有泛型檢查。Set / Set / Set 之間有非常大的差異,詳情可以看看《Set vs. Set》和《Java Type Erasure Mechanism》。

6 訪問級別設置過高

很多開發者為了省事,把類字段標記為 public,這不是個好習慣。好習慣應該是將訪問級別設置得越低越好。

詳見《public, default, protected, and private》。

7 ArrayList 和 LinkedList 選用錯誤

如果不了解 ArrayList 和 LinkedList 的區別,你很容易會傾向于使用 ArrayList,因為它看起來更常見。

但是,ArrayList 和 LinkedList 有巨大的性能差異。簡單來說,如果 add/remove 操作較多,則應該使用 LinkedList;如果隨機訪問操作較多,則應該使用 ArrayList。

如果你想深入了解這些性能差異,可以看看《ArrayList vs. LinkedList vs. Vector》。

8 可變還是不可變?

不可變對象有很多好處,比如簡單、安全等。但是不可變對了要求每次改動都生成新的對象,對象一多就容易對垃圾回收造成壓力。我們應該在可變對象和不可變對象上找到一個平衡點。

一般來說,可變對象可以避免產生太多中間對象。一個經典的例子就是連接大量字符串。如果你使用不可變字符串,你就會造出許多用完即棄的中間對象。這既浪費時間又消耗 CPU,所以這種情況下你應該使用可變對象,如 StringBuilder:

還有一些情況值得使用可變對象。比如你可以通過將可變對象傳入方法來收集多個結果,從而繞開語法的限制。再比如排序和過濾操作,雖然你可以返回新的被排序之后的對象,但是如果元素數量眾多,這就會浪費不少內存。

擴展閱讀《為什么字符串是不可變的》。

9 父類和子類的構造函數

上述代碼會有編譯錯誤,因為沒有實現 Super() 構造函數。在Java中,如果一個類沒有定義構造方法,編譯器會默認插入一個無參數的構造方法;但是如果一個構造方法在父類中已定義,在這種情況,編譯器是不會自動插入一個默認的無參構造方法,這正是以上demo的情況;

對于子類來說,不管是無參構造方法還是有參構造方法,都會默認調用父類的無參構造方法;當編譯器嘗試在子類中往這兩個構造方法插入super()方法時,因為父類沒有一個默認的無參構造方法,所以編譯器報錯;

要修復這個錯誤,很簡單:

1、在父類手動定義一個無參構造方法:

2、移除父類中自定義的構造方法

3、在子類中自己寫上父類構造方法的調用:如super(value);

想了解更多詳情,可以看《Constructors of Sub and Super Classes in Java?》。

10 用 "" 還是用構造函數

字符串可以通過兩種途徑來構造:

有什么區別呢?

下面的代碼可以很快地告訴你區別:

想了解這兩種方式生成的字符串在內存中是如何存在的,可以看看《Create Java String Using ” ” or Constructor?》

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的一般编译器错误_Java程序员最容易犯的10个错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩性大片 | 日本免费在线播放 | 青青国产视频 | 日本一区二区三区久久 | 亚洲va在线∨a天堂va欧美va | 欧美激情欧美激情在线五月 | 欧美不卡一二三 | 美女黄页在线观看 | 成人黄色动漫在线观看 | 大地资源二中文在线影视免费观看 | 一级空姐毛片 | 91精品国产自产精品男人的天堂 | av午夜激情 | 日韩欧美一级在线 | 欧美性福利 | 二区三区| 97视频在线观看免费高清完整版在线观看 | 91爱爱网站 | 影音先锋在线中文字幕 | 成人三级晚上看 | 日本一道本| 乌克兰毛片 | 在线观看 亚洲 | 人妻系列一区 | 偷拍一区二区三区四区 | 欧美性粗暴 | 人妻奶水人妻系列 | 女人高潮特级毛片 | 中文婷婷 | 国产精久久| 中文字幕在线看人 | 久久精品国产亚洲av蜜臀色欲 | 美女扒开尿口让男人捅爽 | 自拍第一区 | av资源一区 | 免费在线观看成人av | 一区二区三区资源 | 巨乳动漫美女 | 欧美一级淫片bbb一84 | 亚洲AV无码AV吞精久久中文版 | 亚洲一区二区自偷自拍 | 黄色网免费观看 | 亚洲自拍电影 | 日韩黄色一级视频 | 亚洲一区欧洲二区 | 伊人中文在线 | 一区二区日韩国产 | 国产18在线观看 | av毛片精品 | 国产高潮自拍 | 婷婷久久五月天 | 欧美视频直播网站 | 国产精欧美一区二区三区蓝颜男同 | 中文av免费 | 欧美色视频在线观看 | av男人的天堂网 | 依人综合网 | 中文二区 | 中文字幕一区二区三区乱码 | 性国产精品 | 亚洲一区免费电影 | 熟妇高潮一区二区高潮 | 91黄瓜| 大色av| 亚洲一区二区三区三州 | 成人看的毛片 | 操人网| 日韩二区在线观看 | 波多野结衣操 | 又大又硬又爽免费视频 | 欧美天天 | 人妻 丝袜美腿 中文字幕 | 九色丨蝌蚪丨成人 | 国产乱国产乱老熟300部视频 | 法国空姐在线观看完整版 | 中文字幕精品视频在线观看 | 99久久99久久 | 涩漫天堂 | 一级做a在线观看 | 丰满人妻一区二区三区四区 | 黑白配在线观看免费观看 | 四川黄色一级片 | 欧美黄色片 | 波波野结衣 | 国外成人性视频免费 | 亚洲欧美亚洲 | 亚洲成人视屏 | 亚洲国产精品va在线看黑人 | 国产精品一区二区6 | 国产精品aaa | av观看网址 | 久久免费电影 | 国产福利精品在线 | 中国在线观看视频高清免费 | 亚洲男同视频 | 日本黄色成人 | 第四色成人网 | 国产麻豆精品一区 | 岛国av免费在线观看 |