Java期末復習——主觀題


  1. JDK 和 JRE 有什么區別?
    JDK:Java Development Kit 的簡稱,java 開發工具包,提供了 java 的開發環境和運行環境。
    JRE:Java Runtime Environment 的簡稱,java 運行環境,為 java 的運行提供了所需環境。
    具體來說 JDK 其實包含了 JRE,同時還包含了編譯 java 源碼的編譯器 javac,還包含了很多 java 程序調試和分析的工具。簡單來說:如果你需要運行 java 程序,只需安裝 JRE 就可以了,如果你需要編寫 java 程序,需要安裝 JDK。

  2. 兩個對象的 hashCode()相同,則 equals()也一定為 true,對嗎?
    不對,兩個對象的 hashCode()相同,equals()不一定 true。因為在散列表中,hashCode()相等即兩個鍵值對的哈希值相等,然而哈希值相等,並不一定能得出鍵值對相等。

  3. final 在 java 中有什么作用?
    final 修飾的類叫最終類,該類不能被繼承。
    final 修飾的方法不能被重寫。
    final 修飾的變量叫常量,常量必須初始化,初始化之后值就不能被修改。

  4. String 屬於基礎的數據類型嗎?
    String 不屬於基礎類型,基礎類型有 8 種:byte、boolean、char、short、int、float、long、double,而 String 屬於對象。

  5. java 中操作字符串都有哪些類?它們之間有什么區別?
    操作字符串的類有:String、StringBuffer、StringBuilder。
    String 和 StringBuffer、StringBuilder 的區別在於 String 聲明的是不可變的對象,每次操作都會生成新的 String 對象,然后將指針指向新的 String 對象,而 StringBuffer、StringBuilder 可以在原有對象的基礎上進行操作,所以在經常改變字符串內容的情況下最好不要使用 String。
    StringBuffer 和 StringBuilder 最大的區別在於,StringBuffer 是線程安全的,而 StringBuilder 是非線程安全的,但 StringBuilder 的性能卻高於 StringBuffer,所以在單線程環境下推薦使用 StringBuilder,多線程環境下推薦使用 StringBuffer。

  6. String str="i"與 String str=new String("i")一樣嗎?
    不一樣,因為內存的分配方式不一樣。String str="i"的方式,java 虛擬機會將其分配到常量池中;而 String str=new String("i") 則會被分到堆內存中。

  7. 如何將字符串反轉?
    使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。

  8. 抽象類必須要有抽象方法嗎?
    不一定,比如它只含有靜態方法時就能夠正常。

  9. 普通類和抽象類有哪些區別?
    普通類不能包含抽象方法,抽象類可以包含抽象方法。
    抽象類不能直接實例化,普通類可以直接實例化。

  10. 接口和抽象類有什么區別?
    實現:抽象類的子類使用 extends 來繼承;接口必須使用 implements 來實現接口。
    構造函數:抽象類可以有構造函數;接口不能有。
    main 方法:抽象類可以有 main 方法,並且我們能運行它;接口不能有 main 方法。
    實現數量:類可以實現很多個接口;但是只能繼承一個抽象類。
    訪問修飾符:接口中的方法默認使用 public 修飾;抽象類中的方法可以是任意訪問修飾符。

  11. java 中 IO 流分為幾種?
    按功能來分:輸入流(input)、輸出流(output)。
    按類型來分:字節流和字符流。

  12. 字節流和字符流的區別
    字節流按 8 位傳輸以字節為單位輸入輸出數據,字符流按 16 位傳輸以字符為單位輸入輸出數據。

說明:以上內容全部摘錄自微信公眾號 “java經驗總結” ,並非本人原創,僅供學習參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM