知了堂Java|Java基礎面試題(一)
1.JDK和JRE有什么區(qū)別
JDK:Java Development Kit 的簡稱,java 開發(fā)工具包,提供了 java 的開發(fā)環(huán)境和運行環(huán)境。
JRE:Java Runtime Environment 的簡稱,java 運行環(huán)境,為 java 的運行提供了所需環(huán)境。
具體來說 JDK 其實包含了 JRE,同時還包含了編譯 java 源碼的編譯器 javac,還包含了很多 java 程序調 試和分析的工具。簡單來說:如果你需要運行 java 程序,只需安裝 JRE 就可以了,如果你需要編寫 java 程序,需要安裝 JDK
2.== 和 equals 的區(qū)別是什么?
答:== 對于基本類型來說是值比較,對于引用類型來說是比較的是引用;而 equals 默認情況下是引用 比較,只是很多類重新了 equals 方法,比如 String、Integer 等把它變成了值比較,所以一般情況下 equals 比較的是值是否相等 對于基本類型和引用類型 == 的作用效果是不同的,如下所示 基本類型:比較的是值是否相同; 引用類型:比較的是引用是否相同;
3.分析下面的代碼,說明其含義
答:兩個對象的 hashCode()相同,則 equals()也一定為 true,對嗎?不對,兩個對象的 hashCode()相 同,equals()不一定 true。代碼解讀:很顯然“通話”和“重地”的 hashCode() 相同,然而 equals() 則為 false,因為在散列表中,hashCode()相等即兩個鍵值對的哈希值相等,然而哈希值相等,并不一定能 得出鍵值對相等
4.java 中操作字符串都有哪些類?它們之間有什么區(qū)別?
操作字符串的類有:String、StringBuffer、StringBuilder。
String 和 StringBuffer、StringBuilder 的區(qū)別在于 String 聲明的是不可變的對象,每次操作都會生成 新的 String 對象,然后將指針指向新的 String 對象,而 StringBuffer、StringBuilder 可以在原有對象 的基礎上進行操作,所以在經(jīng)常改變字符串內容的情況下最好不要使用 String。
StringBuffer 和 StringBuilder 最大的區(qū)別在于,StringBuffer 是線程安全的,而 StringBuilder 是非線 程安全的,但 StringBuilder 的性能卻高于 StringBuffer,所以在單線程環(huán)境下推薦使用 StringBuilder,多線程環(huán)境下推薦使用 StringBuffer。
5.如何將字符串反轉?請寫一段代碼
今天的分享就到這里啦,持續(xù)關注我們,學習更多Java干貨知識。
