Java面試總結——字符串與數組

1.“==”、equals和hashCode有什麼區別

(1) “==”運算符來比較兩個變量的值是否相等。該運算符用於比較變量對應的內存中所存儲的數值是否相同,要比較兩個基本類型或兩個引用變量是否相等,只能使用該運算符。
(2)equals是Object類提供的方法之一。在沒有覆蓋“equals(Object)”的情況下,與 ==沒有區別。
(3)hashCode()方法是從Object類中繼承出來的,用來鑑定兩個對象是否相等。Object類中的hashCode()方法返回對象在內存中 地址轉換爲一個int值,如果沒有重寫hashCode(),任何對象的hashCode()方法是不相等的。
hashCode()和equals的聯繫與區別?
equals()是用戶調用的,hashCode()一般用戶不調用。
在覆蓋equals()的同時覆蓋hashCode()

2.String、StringBuffer、StringBuilder的區別

在Java中,有String,StringBuilder,StringBuffer三者。三者的區別主要是兩個方面,即運行速度和線程安全這兩個方面。
(1)運行速度:
StringBuilder>StringBuffer>String
String爲字符串常量,而StringBuilder和StringBuffer均爲字符串變量。即String一旦創建之後不可更改,但後兩者的對象是變量,是可以更改的。因此String適合在需要被共享的場合中使用。
(2)線程安全:
StringBuilder(單線程)是線程不安全的,StringBuffer(多線程)是線程安全。如果一個Stringbuffer對象在字符串緩衝區中被多個線程使用,StringBuffer中很多方法帶有同步關鍵字,所以保證線程是安全的。只是在單線程中使用字符串緩衝區,那麼StringBuilder的效率會更高些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章