Java基礎面試題——查缺補漏

試題目錄

1.JDK和JRE有什麼區別?

2.  ==  和 equals 的區別是什麼?

3.兩個對象的 hashCode() 相同,則 equals() 也一定爲 true 嗎?

4.final 在Java中的作用是什麼?

5.Java 的 Math.round(-1.5) 等於多少?

6.String屬於基本的數據類型嗎?

7.Java中操作字符串的有哪一些?他們之間有什麼區別?

8.String str = " i " 與 String str = new String(" i ") 一樣嗎?

 9.如何將字符串反轉?

10.String類的常用方法有哪些?

11.抽象類必須要有抽象方法嗎?

12.普通類和抽象類的區別?

13.抽象類能使用final修飾嗎?

14.接口和抽象類的區別?

15.Java中的IO流分爲那幾種?

 16.BIO NIO AIO 有什麼區別?

17.Files的常用方法?


1.JDK和JRE有什麼區別?

JDK:Java開發工具包,提供了Java的開發環境和運行環境。

JRE:Java運行環境,爲Java的運行提供所需的環境。

2.  ==  和 equals 的區別是什麼?

== 解析:

對於基本類型:比較的是值是否相同。

對於引用類型:比較的是引用(地址)是否相同

equals 解析:

本質上是 == 只不過String和Integer等重寫了equals方法,把他變成了值比較。

總結:

一般情況下,equals方法一般比較的是值,所以一般都是要重寫的!

3.兩個對象的 hashCode() 相同,則 equals() 也一定爲 true 嗎?

答案:不對,不一定!!!

因爲在散列表中,hashCode() 相等即相當於兩個鍵值對的哈希值相同,然而哈希值相同不代表鍵值對相等。

4.final 在Java中的作用是什麼?

(1)final修飾的類叫做最終類,不能被繼承

(2)final修飾的方法不能被重寫

(3)final修飾的變量叫做常量,常量必須初始化,初始化之後不能被修改

5.Java 的 Math.round(-1.5) 等於多少?

等於-1

因爲在數軸上取值時,中間值(0.5)向右取整,所以正0.5是往上取整,負0.5是直接捨棄

6.String屬於基本的數據類型嗎?

不屬於!

基本數據類型有:byte short int long float double boolean char

7.Java中操作字符串的有哪一些?他們之間有什麼區別?

操作字符串的類有:String  StringBuffer  StringBuilder

(1)String:final修飾的、不可變的對象。每次操作都會生成新的String對象,頻繁使用會耗費內存。

(2)StringBuffer:線程安全的。多線程環境下推薦使用。

(3)StringBuilder:非線程安全的。單線程環境下推薦使用。

注意:需要頻繁操作字符串不建議使用String。

8.String str = " i " 與 String str = new String(" i ") 一樣嗎?

不一樣!

String str = " i " Java虛擬機會將其分配到常量池中

String str = new String(" i ") Java虛擬機會將其分配到堆內存中

 9.如何將字符串反轉?

使用 StringBuffer 或者 StringBuilder 的 reverse() 方法!!!

10.String類的常用方法有哪些?

indexOf():返回指定字符串的索引

charAt():返回指定索引處的字符

replace():字符串替換

trim():去除字符串兩端空白

split():分割字符串,返回一個分割後的字符串數組

getBytes():返回字符串的byte類型的數組

length():返回字符串長度

toLowerCase():將字符串轉換爲小寫字母

toUpperCase():將字符串轉換爲大寫字母

substring():截取字符串

equals():字符串比較

11.抽象類必須要有抽象方法嗎?

不一定!!!

注意:含抽象方法的類一定是抽象類(或接口)

示例代碼:

abstract class A{
    public static void a(){
        System.out.println("a");
    }
}

以上代碼可以正常運行

12.普通類和抽象類的區別?

(1)普通類不能包含抽象方法,抽象類可以包含抽象方法

(2)抽象類不能實例化,普通類可以實例化

13.抽象類能使用final修飾嗎?

不能,定義抽象類就是給其他類繼承的,如果定義爲final,該類就無法被繼承,產生矛盾。

14.接口和抽象類的區別?

(1)實現:抽象類的子類使用extends;接口使用implements來實現

(2)構造方法:抽象類可以有構造方法;接口不能有

(3)main方法:抽象類中可以有,也能運行;接口不能有

(4)實現數量:類單一繼承;接口多繼承

(5)訪問修飾符:抽象類中的方法是任意訪問修飾符;接口方法默認爲public修飾

15.Java中的IO流分爲那幾種?

按流的方向:輸入流、輸出流

按流的類型:字節流、字符流

注意:類名以“Stream”結尾的是字節流;類名以“Reader/Writer”結尾的是字符流。

字節流跟字符流的區別:字節流以八位傳輸爲單位輸入輸出數據。字符流以十六位傳輸爲單位輸入輸出數據。

 16.BIO NIO AIO 有什麼區別?

同步阻塞BIO:即傳統的IO,模式簡單使用方便,併發處理能力低。

同步非阻塞NIO:即BIO升級,客戶端和服務端通過Channel(通道)通訊,實現多路複用。

異步非阻塞AIO:即NIO升級,也叫NIO2,異步IO的操作基於事件和回調機制。

17.Files的常用方法?

Files.exists():判斷文件是否存在

Files.createFile():創建文件

Files.createDirectory():創建文件夾

Files.delete():刪除一個文件或目錄

Files.copy():複製文件

Files.move():移動文件

Files.size():查看你文件個數

Files.read():讀取文件

Files.write():寫入文件

 

 

 

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