久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Java中常犯的錯誤有哪些

本篇內容介紹了“Java中常犯的錯誤有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

成都創新互聯是一家專注于網站設計制作、成都網站制作與策劃設計,綏芬河網站建設哪家好?成都創新互聯做網站,專注于網站建設10多年,網設計領域的專業建站公司;建站業務涵蓋:綏芬河等地區。綏芬河做網站價格咨詢:028-86922220

1. 忽略訪問修飾符

雖然有點莫名其妙,但候選者真的經常忘記Java中protected訪問修飾符的作用域。也許是因為面試過程中過于焦慮和緊張,他們通常只能答出其一:

  • 可從子類訪問protected字段、方法和構造函數。

  • 可從同一包中訪問protected字段、方法和構造函數。

此外,包的作用域能幫助許多開發人員編寫自己的測試:可以從測試路徑訪問受保護的方法。所以忘記這個屬性等同于在面試中表明自己從來沒有編寫過測試!

2. 字符串連接

如果使用大量字符串或大型字符串,則可能會在連接過程中浪費大量內存。

Java中常犯的錯誤有哪些

上述示例是創建一些StringBuilder和String對象:準確來說,是10.000.000個StringBuilder和10.000.001個String。

解釋:

先退一步,看看發生了什么。

當使用+運算符進行字符串連接時,將創建一個中間對象,該對象存儲連接的結果后,將結果賦值給目標對象。

Java中常犯的錯誤有哪些

在如上示例中,一共創建了3個對象:2個用于文本,1個用于連接,即第一個字符串result的副本加上第二個字符串“world!”。因為String是不可變的,所以這種字符串連接是可以實現的。

但是編譯器是足夠智能的,可以將代碼轉化為以下內容(Java9+不適用,因為它使用StringContactFacotry,但結果非常相似):

Java中常犯的錯誤有哪些

此優化刪除了中間連接對象,內存被2個字符串文本和1個StringBuilder占用??傮w而言,字符串對象的數量從O(n²)下降到O(n)。

回到第一個示例,編譯器對代碼的優化如下:

Java中常犯的錯誤有哪些

編譯器只是優化了內部連接,但這會創建很多StringBuilder和String對象!連接字符串的正確方法如下,只需一個StringBuilder和一個String。

Java中常犯的錯誤有哪些

3. 沒有使用equals()

如果你正在使用==(比較運算符)而不是調用equals()函數,那么你需要改變這個習慣,結果可能會令人大吃一驚。

Java中常犯的錯誤有哪些

解釋:

當想要比較兩個String以及其他任何對象時,不要使用==。==只比較兩個操作數的對象引用(內存地址比較)而非內容。

在上面的例子中,字符串不能啟動字符串駐留機制:它的內存地址與x不同。

4. 返回null

筆者已經發現了很多次這樣的方法:

Java中常犯的錯誤有哪些

返回null的問題是強行讓調用方對結果進行空檢查;在這種情況下,如果沒有項,調用方就會返回空列表。

開發人員總是希望返回一個異常或特殊對象(如空列表),否則使用代碼的應用程序將受到NullPointerException的影響。

5. 密碼為字符串

將用戶提供的密碼存儲在字符串對象中是一個安全問題,字符串容易受到內存攻擊。

應該使用char[],就如同JPasswordField和Password4j正在做的那樣。但如果討論的是Web應用程序,大多數Web容器都將HttpServletRequest對象中的純文本密碼作為String傳遞,所以開發人員幾乎對此無能為力。

解釋:

字符串由Java虛擬機(JVM)(駐留)緩存并存儲在PermGen空間(Java8之前)或堆空間中。在這兩種情況下,只有在垃圾回收發生后才刪除緩存值:這意味著無法得知特定值何時會從字符串池中刪除,因為垃圾收集器的行為是不確定的。

另一個問題是,String是不可變的,因此不能清除它們。然而char[]是可變的,并且可以在處理后刪除(例如用0替換每個元素)。通過這個簡單的技巧,攻擊者只能在內存中找到全為零的數組而不是純文本密碼。

6. 傳遞null

傳遞null意味著,理所當然地認為調用的代碼可以管理null。如果不能,那么應用程序肯定會拋出NullPointerException。

另外,顯式傳遞null會使代碼越來越混亂。下面是一個典型實例:

Java中常犯的錯誤有哪些

調用init()時,沒有可用的User對象。那么,如果一個User都沒有,為什么要調用一個對User進行操作的函數呢?如果需要grantAccessToUser()中的邏輯,就應該從其他的函數中提取并使用,而非傳遞null。

7. Heavy methods

以下示例可能會導致系統性能損失:

Java中常犯的錯誤有哪些

Pattern.compile()是一個資源占用極高的函數,不應在每次檢查字符串是否與同一模式匹配時都調用它。

解釋:

Pattern.compile() 將模式預編譯,以便使用更快的內存表示。與單個匹配相比,此操作需要極強的計算能力。

增加性能的經典方法是在靜態字段中緩存Pattern對象,如下所示:

Java中常犯的錯誤有哪些

每次使用同一個資源占用極高的無狀態對象時,都應該使用這個解決方案。

8. 迭代時處理集合

Java中常犯的錯誤有哪些

這段代碼將拋出ConcurrentModificationException。

解釋:

在迭代時從列表中刪除某個項目,列表迭代器會運行不良,例如跳過元素、重復元素、索引數組末尾等。這就是許多集合更容易拋出oncurrentModificationException的原因。

使用底層數組迭代器:

Java中常犯的錯誤有哪些

9. 使用“返回碼”而不是拋出異常

在某種意義上,開發人員認為異常是不祥的,因此他們傾向于編寫返回奇怪值的函數,如-1或“C_ERR”。

Java中常犯的錯誤有哪些

這是一個值得創建自定義Exception的典型情況。該示例可以改寫如下:

Java中常犯的錯誤有哪些

正如所見,代碼的可讀性和可維護性大大提高。調用者只需讀取DeviceStartException的內容,而不必處理每個返回碼。

10. 使用StringBuffer

Java中常犯的錯誤有哪些

由于StringBuffer的同步特性,此示例會產生大量內存占用。在更復雜的環境中,讀取器可能會錯認為某些不必要的同步是必要的。

如果項目中包含StringBuffer,可能是因為某些遺留API(即Java5之前)需要它,而很少是因為代碼試圖在并發環境中追加String。改用StringBuilder:在Java5時引入,其所有操作是不同步的。

這只是筆者在面試和活動項目中看到的部分錯誤,還沒有提到面向對象編程(OOP)的陷阱、設計模式、過度設計、內存泄漏等缺陷

Java中常犯的錯誤有哪些

如果你有這些問題,那么是時候改變編碼風格。這并不難,避免這些陷阱能增強開發人員的經驗,并且使人主動為下一次面試做更多的準備。

多使用像SonarQube這樣的靜態代碼分析器,它能指出實際錯誤,突顯潛在錯誤。

“Java中常犯的錯誤有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!

網站欄目:Java中常犯的錯誤有哪些
URL標題:http://www.js-pz168.com/article48/jgdjep.html

成都網站建設公司_創新互聯,為您提供動態網站、面包屑導航、做網站軟件開發、關鍵詞優化用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
久久国产免费看| 国产精品一级久久久| 高清日韩一区| 亚洲一区综合| 精品美女一区二区| 欧美日韩午夜影院| 国产视频911| 天天av天天翘天天综合网| 成人午夜av影视| 欧美一区二视频在线免费观看| 欧洲精品久久| 欧美一区二区三区的| 亚洲天堂2016| 国产精品乡下勾搭老头1| 丁香天五香天堂综合| 欧美激情国产日韩| 欧美日韩dvd在线观看| 日韩理论在线观看| 国产精品中文欧美| 欧美一区二区高清在线观看| 4hu四虎永久在线影院成人| 亚洲欧美日本韩国| 国产精品亚洲一区二区三区在线 | 亚洲欧美偷拍三级| 污片在线观看一区二区| 九一久久久久久| 国产一区二区不卡视频在线观看| 欧美亚洲一级二级| 日韩精品一区二区三区在线播放 | a美女胸又www黄视频久久| 日本高清不卡一区二区三| 欧美一级精品大片| 一区二区日韩电影| 91亚洲国产成人精品一区二三| 国模精品一区二区三区| 欧美人与性动xxxx| 国产无一区二区| 亚洲一区二区中文在线| 精品影视av免费| 欧美一级日本a级v片| 精品欧美一区二区久久| 免费在线观看日韩欧美| 成人午夜短视频| 中文字幕一区二区中文字幕| 国产欧美一区二区精品秋霞影院| 亚洲影视在线观看| 91成人理论电影| 欧美二区在线观看| 日韩黄色片在线观看| 国产精选在线观看91| 日韩午夜精品电影| 强制捆绑调教一区二区| 久久99精品久久久久久秒播放器| 日本丰满少妇一区二区三区| 国产精品初高中害羞小美女文| 免费高清成人在线| 精品在线视频一区二区三区| 精品国产免费人成在线观看| 美国欧美日韩国产在线播放| 日本精品一区二区| 国产精品免费视频网站| 成人精品国产免费网站| 欧美性高清videossexo| 一区二区三区日韩欧美精品 | 欧美在线观看一区二区| 亚洲精品第1页| 99www免费人成精品| 日韩一卡二卡三卡| 久久精品国产**网站演员| 亚洲激情一区二区| 亚洲视频免费看| wwwxx欧美| 欧美tickling挠脚心丨vk| 精久久久久久久久久久| 中文字幕一区二区三区四区五区| 久久无码av三级| 国产aⅴ综合色| 欧美羞羞免费网站| 日韩综合在线视频| 亚洲精品成人自拍| 亚洲免费资源在线播放| 国产精品久久久久久久天堂第1集| 在线视频你懂得一区| 亚洲午夜av在线| 欧美日韩一区二区三区在线观看免| 欧美一区在线视频| 韩国av一区二区三区在线观看| 免费成人在线观看av| 国产精品久久久久久久久动漫| 国产又粗又猛又爽又黄91精品| 蜜桃免费一区二区三区| 中文字幕在线不卡视频| 粉嫩av一区二区三区免费观看| 欧美卡1卡2卡| 国内精品伊人久久久久av影院 | 91黄色免费观看| 午夜精品久久久久影视| 婷婷久久伊人| 国产欧美精品区一区二区三区| 极品美女销魂一区二区三区| 色域天天综合网| 首页国产丝袜综合| 高清免费日韩| 国产精品美女久久久久久久网站| 国产成人av电影在线| 欧美一区午夜视频在线观看 | 日韩和欧美一区二区三区| 亚洲精品中文字幕乱码三区不卡 | 欧美日韩国产色站一区二区三区| 亚洲午夜电影网| 亚洲午夜精品久久| 日韩电影在线免费观看| 欧美在线小视频| 国产一区二区三区蝌蚪| 欧美一区二区高清| 不卡的电视剧免费网站有什么| 欧美亚洲一区二区在线| 精久久久久久久久久久| 中文字幕一区二区三区四区五区六区 | 精品成人免费观看| 99久久99精品久久久久久| 国产欧美精品一区二区色综合| 国产69精品久久久久777| 欧美天堂一区二区三区| 国产乱码精品一品二品| 精品日韩av一区二区| 99精品国产高清一区二区| 中文字幕一区二区三区av| 1区1区3区4区产品乱码芒果精品| 欧美一区二区视频观看视频| 成人免费的视频| 国产天堂亚洲国产碰碰| 精品乱子伦一区二区三区| 久久精品在这里| 精品在线观看一区二区| 亚洲123区在线观看| 欧美午夜精品久久久久免费视| 中文av一区二区| 欧美日韩最好看的视频| 免费日本视频一区| 一区二区三区四区欧美日韩| 麻豆成人久久精品二区三区红 | 艳妇臀荡乳欲伦亚洲一区| 伊人狠狠色丁香综合尤物| 国模娜娜一区二区三区| 欧美日韩综合一区| 成人黄色在线看| 国产精品午夜春色av| 涩涩涩999| 亚洲第一会所有码转帖| 欧洲一区二区在线| 亚洲激情一二三区| 日本道色综合久久| 懂色av一区二区夜夜嗨| 国产精品视频一区二区三区不卡| 99久久精品免费看国产四区| 久久精品在线观看| 欧美亚洲免费高清在线观看 | 国产高清在线精品一区二区三区| 久久蜜桃香蕉精品一区二区三区| av高清久久久| 亚洲精品视频在线观看免费| 欧美亚洲国产一区二区三区va | 91美女视频网站| 欧美激情综合在线| 国产精品一区在线播放| 亚洲成av人**亚洲成av**| 五月天亚洲综合情| 国产精品一二三四| 日韩精品最新网址| 99精品视频在线观看免费| 亚洲三级久久久| 色999五月色| 国产成人免费视频网站高清观看视频| 日韩欧美自拍偷拍| 久久久精彩视频| 国产精品一区二区男女羞羞无遮挡| 91精品一区二区三区在线观看| 粉嫩av一区二区三区粉嫩| 日韩一区日韩二区| 欧美片网站yy| 国产日韩欧美亚洲一区| 久久国产乱子精品免费女| 欧美一区在线视频| 久久精品日韩| 国产一区 二区| 亚洲精品免费一二三区| 日韩一区二区三区精品视频| 91高跟黑色丝袜呻吟在线观看| 中文字幕中文字幕一区二区| 欧美视频一区二区三区在线观看 | 欧美高清视频一二三区 | 久久男人中文字幕资源站| 亚洲女人毛片| 91九色在线观看| 免费看精品久久片| 中文字幕一区二区三区在线播放| 午夜精品区一区二区三| av一本久道久久综合久久鬼色| 中文字幕制服丝袜成人av|