java代码中哪些不能犯的错误_Java程序员工作中千万不能犯的3个低级错误
常在河邊走,哪有不濕鞋。Java工程師也是人,他們也會犯錯誤。但是千鋒廣州小編提醒大家有三個錯誤是萬萬不能犯的!工作中犯了這三個錯誤,今年的加薪就和你say goodbye了!快看看自己是不是中槍了。
忽略訪問修飾符
雖然有點莫名其妙,但忘記Java中protected訪問修飾符的作用域真的是許多人的家常便飯。那么protected訪問修飾符的作用域有哪些呢?
· 可從子類訪問protected字段、方法和構(gòu)造函數(shù)。
· 能從同一包當(dāng)中訪問protected字段、方法和構(gòu)造函數(shù)。
除此之外,包的作用域還可以幫助許多開發(fā)人員來編寫自己的測試:可以從測試路徑訪問受保護的方法。所以忘記這個屬性等同于在面試中表明自己從來沒有編寫過測試!
沒有使用equals()
如果是Java工程師的你正在使用==(比較運算符)而不是調(diào)用equals()函數(shù),這個習(xí)慣,必須要改!當(dāng)想要比較兩個String以及其他任何對象時,不要使用==。==只能解決兩個操作數(shù)的對象引用(內(nèi)存地址比較)的比較。
密碼為字符串
作為一個安全問題,將用戶提供的密碼存儲在字符串對象中是非常危險的,它使得字符串容易受到內(nèi)存攻擊。
使用char[]是最好的解決方法,就像JPasswordField和Password4j正在做的那樣。但是假如是Web應(yīng)用程序的話,那么大多數(shù)Web容器都將HttpServletRequest對象中的純文本密碼作為String傳遞。
字符串由Java虛擬機(JVM)(駐留)緩存并存儲在PermGen空間(Java8之前)或堆空間中。出現(xiàn)這兩種問題的話,那么在垃圾回收發(fā)生后才會刪除掉緩存值:這就相當(dāng)于無法得知特定值何時會從字符串池中刪除,因為垃圾收集器的行為是不確定的。
而另一個存在的問題就是,String是無法更改的,所以不能清除它們。但實際上char[]是可更改的,同時可以在處理后刪除(例如用0替換每個元素)。通過這個簡單的技巧,攻擊者只能在內(nèi)存中找到全為零的數(shù)組而不是純文本密碼。
怎么樣,這三個坑,作為Java工程師的你理解了嗎?理解的話以后就一定不要再犯了哦!
總結(jié)
以上是生活随笔為你收集整理的java代码中哪些不能犯的错误_Java程序员工作中千万不能犯的3个低级错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 不要使用魔法值_Java代码中
- 下一篇: 突破润滑油有哪些类型?