一、Java 基礎
- JDK 和 JRE 有什麼區別?
(1)JDK 全稱Java development kit Java語言開發工具。 把Java程序設計語言、Java虛擬機、JavaAPI庫這三部分統稱爲JDK, 用於支持Java開發的最小開發環境。 (2)JRE 全稱 Java runtime environment Java運行環境。 把JavaAPI類庫中的JavaSE API子集和Java虛擬機這兩部分統稱爲JRE,是支持java運行的標準環境。
- == 和 equals 的區別是什麼?
(1)== 是比較對象的引用地址。 (2)equals() 比較的是兩者的值是否相等,看過String類中equals()方法的實現後,你就會發現,它是把字符串拆成字符逐個比較。 public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
- 兩個對象的 hashCode()相同,則 equals()也一定爲 true,對嗎?
(1)兩個對象相同,它們的hash值一定相同。 (2)兩個hash值相同,但是它們所指向的對象不一定相同。 因爲在產出hash值的時候,極其小的概率發生hash碰撞,生成兩個相同的hash值。
- final 在 java 中有什麼作用?
(1)final修飾類,不能被繼承。 (2)final修飾的方法,不能被重寫和重載。 (3)final修飾的變量,值不能被改變。
- java 中的 Math.round(-1.5) 等於多少?
Math.round(-1.5) = -1; Math.round(1.5) = 2;
- String 屬於基礎的數據類型嗎?
String不是基本的數據類型,是final修飾的java類,java中的基本類型一共有8個,它們分別爲: 1 字符類型:byte,char 2 基本整型:short,int,long 3 浮點型:float,double 4 布爾類型:boolean
- java 中操作字符串都有哪些類?它們之間有什麼區別?
String,StringBuffer,StringBuilder (1)用String操控字符串,每次會產生一個新的對象,不適合用它來操作字符串。 (2)StringBuffer是一個線程安全的操作字符串的類,因爲它在方法中加上了synchronized 關鍵字,所以在多線程的環境下可以保證線程安全。由於增加鎖機制,所以會佔用一些資源消耗。 (3)StringBuilder是最快的一個字符操作類,它沒有增加鎖機制,所以不會保證線程安全,只能在單機的模式下使用。
- String str="i"與 String str=new String("i")一樣嗎?
(1)String str = "i"; 創建的i是存儲在字符串常量池中。 (2)String str = new String("i"); 創建的i是存儲在 java堆中,str 指向的對象的存儲地址。
- 如何將字符串反轉?
可以使用 StringBuffer類中的 reverse()方法 進行反轉。
- String 類的常用方法都有那些?
(1)equals(); (2)compareTo(); (3)concat(); (4)indexOf(); (5)substring(); (6)replace(); (7)trim(); (8)valueOf();
- 抽象類必須要有抽象方法嗎?
(1)抽象類中可以沒有抽象方法,但是有抽象方法的類一定是抽象類。
- 普通類和抽象類有哪些區別?
(1)抽象類與普通類相比,抽象類不可以被實例化。
- 抽象類能使用 final 修飾嗎?
抽象類不可以用final關鍵字進行修飾。
- 接口和抽象類有什麼區別?
(1)抽象類中的方法可以被實現,可以有構造方法。可以private 、protected、default、public進行修飾。 (2)接口中方法不可以被實現、不能有構造方法、只能使用default、public 修飾。
- java 中 IO 流分爲幾種?
Java中的流分爲兩種,一種是字節流,另一種是字符流, 分別由四個抽象類來表示(每種流包括輸入和輸出兩種所以一共四個): InputStream,OutputStream,Reader,Writer。Java中其他多種多樣變化的流均是由它們派生出來的.
- BIO、NIO、AIO 有什麼區別?
(1)IO (同步阻塞IO) (2)NIO(同步非阻塞IO) (3)AIO(異步非阻塞IO)
- Files的常用方法都有哪些?
(1)創建: createNewFile()在指定位置創建一個空文件,成功就返回true,如果已存在就不創建,然後返回false。 mkdir() 在指定位置創建一個單級文件夾。 mkdirs() 在指定位置創建一個多級文件夾。 renameTo(File dest)如果目標文件與源文件是在同一個路徑下,那麼renameTo的作用是重命名, 如果目標文件與源文件不是在同一個路徑下,那麼renameTo的作用就是剪切,而且還不能操作文件夾。 (2)刪除: delete() 刪除文件或者一個空文件夾,不能刪除非空文件夾,馬上刪除文件,返回一個布爾值。 deleteOnExit()jvm退出時刪除文件或者文件夾,用於刪除臨時文件,無返回值。 (3)判斷: exists() 文件或文件夾是否存在。 isFile() 是否是一個文件,如果不存在,則始終爲false。 isDirectory() 是否是一個目錄,如果不存在,則始終爲false。 isHidden() 是否是一個隱藏的文件或是否是隱藏的目錄。 isAbsolute() 測試此抽象路徑名是否爲絕對路徑名。 (4)獲取: getName() 獲取文件或文件夾的名稱,不包含上級路徑。 getAbsolutePath()獲取文件的絕對路徑,與文件是否存在沒關係 length() 獲取文件的大小(字節數),如果文件不存在則返回0L,如果是文件夾也返回0L。 getParent() 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回null。 lastModified()獲取最後一次被修改的時間。 (5)文件夾相關: static File[] listRoots()列出所有的根目錄(Window中就是所有系統的盤符) list() 返回目錄下的文件或者目錄名,包含隱藏文件。對於文件這樣操作會返回null。 listFiles() 返回目錄下的文件或者目錄對象(File類實例),包含隱藏文件。對於文件這樣操作會返回null。 list(FilenameFilter filter)返回指定當前目錄中符合過濾條件的子文件或子目錄。對於文件這樣操作會返回null。 listFiles(FilenameFilter filter)返回指定當前目錄中符合過濾條件的子文件或子目錄。對於文件這樣操作會返回null。