java第一階段知識點

aoyizhitatashi發表於2017-11-26

1.java平臺體系的劃分?

 答:標準版(JAVASE,stantard edition)主要應用場景:主要用於桌面應用軟體的程式設計。

     企業版(JAVAEE,enterprise edition)主要應用場景:主要用於分散式的網路程式開發,比如電子商務網站和ERP系統,簡化企業解決方案的開發。

    Micro版(JAVA ME,micro edition)主要應用場景:主要用於嵌入式系統和移動裝置的開發。

2.Jdk環境變數的配置

答:

3.java識別符號?

答:用作給變數、類和方法命名。注意:表示類名的識別符號用大寫字母開始。如:Man, GoodMan

表示方法和變數的識別符號用小寫字母開始,後面的描述性詞以大寫開始。eat(),eatFood()

4.java的資料型別怎麼劃分,分別是什麼?

答:分為基本資料型別和引用資料型別。基本資料型別中又分為數值型(byte、short、long、int、float、double)、字元型(char)、布林型(boolean);引用資料型別分為陣列、介面和類。

5.常量怎麼劃分?

答:文字常量:在程式中直接給出量值的量。”abc”

         符號常量:使用final修飾的變數

6.區域性變數怎麼定義?

答:區域性變數 只能在當前函式中使用

7.資料型別轉換?

答:1.自動轉換:小轉大可以自動轉換如:int i=1  float d=i;

2.強制轉換:  大轉小如:int i;  double d=4.4; i=(int)d;如果低階型別為char型,向高階型別(整型)轉換時,會轉換為對應ASCII碼值;對於byte,short,char三種型別而言,他們是平級的,因此不能相互自動轉換,可以使用下述的強制型別轉換。

3. boolean型別不可以轉換成其他基本型別,但是可以使用if判斷來賦值

8.算術運算子有哪些?

答:+  -  * /  %  ++  --

9.關係運算子有哪些?

答:==  !=  >= <=  >  <

10.邏輯運算子有哪些?

答:&   &&  |  ||   !  ^

11.選擇結構有哪幾種?

答:switch-case,  if-else

12.迴圈結構有哪幾種?

答:while迴圈、do while迴圈、for迴圈、巢狀迴圈。

13.break、continue、return關鍵字的作用?

答:break:用於完全結束一個迴圈,而不是等到條件為false時才退出迴圈。

         continue:忽略本次迴圈剩下的語句,接著開始下一次迴圈,並不會終止迴圈。

         return:用於結束一個方法,當方法執行到return語句時,這個方法將被結束。

14.什麼是陣列?陣列基本要素有哪些?怎麼定義陣列?定義有哪兩種方式?

答:陣列:由若干同型別的資料組成的集合。

         定義陣列:

動態定義1.陣列型別[] 陣列名=new 陣列型別[陣列長度];  

         靜態定義2.陣列型別[] 陣列名=new 陣列型別[]{陣列0,陣列1,陣列2,...};

 

15.Arrays類使用?

答:List  list = new ArrayList();

16.類和物件的概念?類中有什麼?

答:類:一組相同或者相似性質的物件的抽象

         物件:類的具體化,類的例項化

17.物件的建立方式和使用?

答: 1:實名建立

  資料型別  引用變數=new 資料型別();

2:匿名建立

  new  資料型別();

18.變數和方法的劃分?

答:

19.方法傳參的方式?

答:值傳遞、引用傳遞。

20.訪問修飾符有哪些?

答:public  protected  private  預設修飾符

21.構造方法的作用?特點?

答:作用:建立物件的同時呼叫的方法,常用於初始化值

特點:方法名和類名相同;

沒有返回值(也沒用void);

構造方法可以帶引數;

構造方法可以過載。

22.this關鍵字的作用?

答:this總是指向呼叫當前方法的物件。

this代表當前類中隱藏的物件,它總是指向當前正在呼叫方法的物件

23.單例設計模式(Singleton)特點是什麼?

答:無論訪問該類多少次,只能得到該類的唯一例項。

24.方法的過載是什麼?.

答:在同一個類中,方法名相同,引數的個數或型別不同,與返回值型別無關。

25.物件導向的三大特徵---封裝?

答:指的是將物件的狀態資訊隱藏在物件內部,不允許外部程式直接

訪問,而是通過該物件所提供的方法進行操作訪問

26.物件導向的三大特徵---繼承?關鍵字?繼承的作用?

答:繼承:在Java中使用extends關鍵字讓一個類繼承另外一個類,被繼承的類叫超類,基類,父類,繼承父類的類叫子類或者派生類

         關鍵字:extends

         作用:1.提高了程式碼的複用性  2.減少了模組間的介面,提高了程式碼的易維護性。

27.super關鍵字?作用?

答:定義:用於限定該物件呼叫它從父類繼承得到的例項變數或方法。

作用:在子類方法中呼叫父類被覆蓋或隱藏的例項方法或變數

28.方法的重寫?(面試官常問與方法過載的區別)

答:發生在繼承期間,子類擁有與父類相同的方法名,相同的引數列表,訪問許可權不能縮小於父類許可權,返回值型別與父類一致或者是其子類型別的方法,也被稱之為方法覆蓋。

 

方法重寫和方法過載的區別:

答:區別:1過載是發生在同一個類中,重寫(override)是發生在繼承期間;

2過載時候引數個數或者型別必須不同,重寫時候引數列表必須相同;

3過載時候與返回值無關,重寫時候返回值型別必須與父類或其子類一致。

29.構造方法能否被繼承?

答:不能

30.方法和屬效能否被繼承?

答:能

31.初始化塊?

答:初始化塊:類中的第四種成員

劃分為:1.靜態初始化塊:屬於類本身,與物件無關,在類被載入執行期間執行,多個靜態初始化塊按照定義順序執行

2.非靜態初始化塊:屬於具體某個物件,在例項化物件的同時呼叫構造方法之前被執行。

32.final關鍵字?

答:可以用來修飾類,方法,物件,變數

final類:最終類,該類不可被繼承

final方法:最終方法,該方法不可被重寫

final物件:引用變數無法指向別的物件

final變數:符號常量,

33.什麼是多型?實現多型的機制?多型的表現形式?

答:多型:同一種引用型別使用不同的例項執行不同的操作

實現機制:向上轉型和向下轉型

表現形式:方法過載和方法重寫

34.向上轉型和向下轉型

答:向上轉型:父類引用指向子類物件

向下轉型:先向上轉型,然後將父類引用轉換為子類型別

35.instanceof關鍵字

答:為了避免向下轉型出現的錯誤。即在進行強制型別轉換之前,首先先用instance判斷前一個物件是否是後一個類的例項,是否可以成功轉換,從而保證程式碼更加強壯。

36.抽象類:如果一個類中沒有包含足夠的資訊來描繪一個具體的物件,這就是抽象類

37.抽象類的定義?

答:定義:如果一個類中沒有足夠的資訊來描述一個物件,那麼該類就可以定義成一個抽象類了

38.普通類和抽象類區別?

答:1.語法上抽象類必須得有abstract修飾,普通類沒有。

2.抽象類可以定義抽象方法,普通類不可以。

3.普通類可以例項化,而抽象類不能例項化

39.普通方法和抽象方法的區別?

答:

40.什麼是介面?定義介面的關鍵字?實現介面的關鍵字?如何實現多個介面?介面能否繼承介面?

答:介面:一種特殊的抽象類;關鍵字:interface;

         如何實現多個介面:publicclass 類名 implement 介面名,介面名,…{}

介面可以繼承介面

41.介面的特點?

答:1介面中只能定義靜態常量、抽象方法、預設方法,不能定義成員變數、普通方法、構造器以及初始化塊。

2介面不能例項化,因次介面需要被繼承

3實現一個介面就必須重寫介面中所有的抽象方法,而預設方法還可以有選擇的重寫

4介面可以實現多型5介面也可以繼承介面

42.簡單工廠模式?

43.介面和抽象類的區別?

答:1.抽象類體現的是繼承,而介面類是一種特殊的抽象類,更多的體現的是一種規範。

2.介面中只能定義靜態常量,抽象方法,預設方法和靜態方法,不能定義成員變數、普通方法、構造器以及初始化塊。而抽象類中可以定義成員變數,成員方法,構造器,初始化塊。

3.介面中方法都必須公開,而抽象類中可以定義私有的。

4.語法上有抽象類必須有abstract來修飾,而介面必須有interface。

44.字串處理類有哪些?

答:String Buffer、String Builder、

45.String類提取字串的方法是什麼?

答:substring()

46.String類比較字串內容的方法是什麼?

答:equals()  ;

47.String類替換字串內容的方法是什麼?

答:replace()

48.StringBuffer追加字串的方法是什麼?

答:append()

49.java裡如何獲取系統日期時間?

答:SimpleDateFormat()

50.java裡取隨機數的方式?

答:ath.random();

51、常用集合介面都有哪些?

答:List   Set   Map Iterator

52、List介面有哪些實現類?

答:ArrayList、LinkedList、Vector

53、Set介面有哪些實現類?

答:HashSet、TreeSet

54、List介面和Set介面的區別是什麼?

答:List:元素有放入順序,元素可重複,

    Set特點:元素無放入順序,元素不可重複

55、ArrayList和LinkedList的區別?

答:ArrayList:底層實現為陣列,適合元素的隨機訪問(查詢效率較高),預設長度為10,擴容後容量是原來的1.5倍

   Linklist:採用連結串列儲存方式,插入,刪除元素時效率比較高

 

56、ArrayList和Vector的區別?

答:1Vector屬於執行緒安全的集合類,而ArrayList是執行緒不安全的。

   2Vector擴容後是原來的2倍,而ArrayList擴容後是原來的1.5倍。

57、Iterator 是什麼?

答:Iterator介面是java集合框架的成員,前面學習的Collection等集合主要負責盛裝物件,而java中則專門提供Iterator用於遍歷集合中的物件,故也稱為迭代器。58、HashSet和TreeSet類的區別?

59、List和Map的區別?

答:List特點:元素有序,允許元素重複出現

Map:一種以鍵值對儲存數值的集合,其中key(鍵)無序,不能重複,並且可以通過key找到唯一對應的value(值)。

60、Map的常用實現類有哪些?

答:HashMap、HashTable

61、HashMap與Hashtable的區別?

答:區別在於:1Hashtable執行緒安全;HashMap執行緒不安全。

              2HashMap可以使用null來寫key和value,而Hashtable不可以。如果把null值放進hashtable中,將會引發NullPointException異常

62、Collection與Collections的區別?

答:Collection 是一個集合介面。它提供了對集合物件進行基本操作的通用介面方法。Collection介面在Java 類庫中有很多具體的實現。Collection介面的意義是為各種具體的集合提供了最大化的統一操作

         Collections是一個包裝類。它包含有各種有關集合操作的靜態多型方法。此類不能例項化,就像一個工具類,服務於Java的Collection框架。

63、為什麼使用泛型?使用泛型有什麼好處?

答:why:在使用範型時.就規定了只有某種型別的資料才能放進集合裡.你在集合中取資料時就不用進行強制轉換.這樣就提高了程式的效能

泛型的好處是在編譯的時候檢查型別安全,並且所有的強制轉換都是自動和隱式的,提高程式碼的重用率。

64、Java中異常的分類?

答:最頂層的異常父類(Throwable),它包括Error(底層錯誤)和Exception兩個子類。Exception又分為RuntimeException和非RuntimeException兩個子類。

65、Java的異常處理是通過哪幾個關鍵字來實現的?分別代表什麼?

答:try :放的是有可能產生異常的程式碼

catch:用來接收Java虛擬機器丟擲的異常物件,然後在程式碼中進行處理

finally:不論程式碼是否產生異常,其程式碼塊中的程式碼會被“強制”執行

throws:是方法宣告的一部分,是緊跟在引數列表之後的,其作用是告訴客戶端程式設計師使用此方法可能會丟擲的異常,也就是異常說明

throw:作用在方法體內 是用於丟擲一個異常物件

66、什麼時候需要捕獲異常?

答:使用throws宣告的非執行時異常需要在呼叫時捕獲

67、如何實現自定義異常?

答:步驟1.建立自定義異常類繼承Exception,編寫構造方法,繼承父類的實現

    步驟2.在類中使用異常,即使用throw丟擲例項化自定義異常物件

步驟3.在程式中捕獲異常

68、File是否屬於流?作用是什麼?

答:不屬於;作用:以抽象的方式代表磁碟上的檔案和目錄,通過該物件可以在磁碟中建立、查詢、刪除檔案和目錄。

69、Java中有幾種型別的流?

答:按方向劃分為:輸入流input和輸出流output。

    按照資料處理的單位劃分為:位元組流和字元流。稱:位元組輸入、位元組輸出流,字元輸入、字元輸出流

    按照功能角色劃分為:節點流(必須嫁接在一個物理檔案上,最裡邊的一層流)和處理流(最外面的一層流,不能嫁接在物理檔案上,必須套在流上)

70、位元組流和字元流的區別是什麼?頂層抽象類是什麼?他們分別有哪些常用的子類?

答:位元組流是以位元組為單位讀取資料,字元流是以字元為單位讀取資料;位元組流在操作時本身不會用到緩衝區(記憶體),是檔案本身直接操作的,而字元流在操作時使用了緩衝區,通過緩衝區再操作檔案

         InputStream是所有位元組輸入流的祖先,而OutputStream是所有位元組輸出流的祖先;Reader是所有讀取字串輸入流的祖先,而writer是所有輸出字串的祖先。

71、位元組流的緩衝流是哪幾個?字元流的緩衝流是哪幾個?

答:位元組流的:BufferedInputStream   BufferedOutputStream 

         字元流的:BufferedReader       BufferedWriter

72、Java中的轉換流的作用是什麼?

答:將位元組流轉換為字元流

73、Java中的列印流有哪些?

答:位元組列印流(PrintStream) 和字元列印流(PrintWriter)

74、Java中實現序列化有哪幾種方式?如何自定義序列化?

答:

75、網路程式設計中ServerSocket與Socket的工作原理是什麼?

答:Socket本身是基於TCP/IP協議的,而TCP/IP協議需要區分兩臺或多臺機器其中一臺機器是客戶端,另一臺機器必須是服務端,客戶端之間通過Socket和ServerSocket建立連線後,客戶端利用輸出流將資訊託付給Socket,該Socket則通過底層的硬體(如網路卡驅動程式)利用網路傳輸給另一臺機器(服務端)的Socket,服務端則通過輸入六從Socket中讀取資訊顯示或使用;反之一樣。

76、Java中如何實現多執行緒的?

答:1. 繼承Thread類實現多執行緒   2. 實現Runnable介面方式實現多執行緒

如果自己的類已經extends另一個類,就無法直接extendsThread,此時,必須實現一個Runnable介面

77、你是怎樣理解執行緒的?

答:是在一個程式內部的“可以併發執行的多個函式”,一個程式中可有多個執行緒。即執行緒生活在程式內部,他們共享程式空間,執行緒是由作業系統來維護的。通常所說的機器上的程式執行了其實指的是程式中的主執行緒開始執行了,main方法開始執行了,所以說在機器上執行的其實都是執行緒

78、Java中啟動一個執行緒用start方法還是run方法?他們有什麼區別?

答:start():通過該方法啟動執行緒的同時也建立了一個執行緒,真正實現了多執行緒,這時無需等待run()方法中的程式碼執行完畢就可以直接執行下面的程式碼,通過start建立的執行緒處於可執行狀態,當得到CPU時間片後就會執行其中的run方法,這裡方法run()稱為執行緒體,它包含了要執行的這個執行緒的內容,Run方法執行結束,此執行緒隨即終止。

run():通過run方法啟動執行緒其實就是呼叫一個類中的方法,並沒有建立一個執行緒,程式中還是隻有主執行緒,還是要順序執行,還是要等待run方法體執行完畢後才可繼續執行下面的程式碼,這樣就沒有達到寫執行緒的目的。

79、執行緒的基本狀態以及狀態之間的關係?

答:新建狀態(New)、就緒狀態(Runnable)、執行狀態(Running)、阻塞狀態(Blocked)、死亡狀態(Dead)。


80、sleep()、yield() 、wait()方法的區別?

答:sleep屬於Thread類,而wait屬於Object類。

    sleep()睡眠時,保持物件鎖,仍然佔有該鎖;而wait()睡眠時,釋放物件鎖。

         yield()方法和sleep()方法類似,也不會釋放“鎖標誌”,區別在於,它沒有引數,即yield()方法只是使當前執行緒重新回到可執行狀態,所以執行yield()的執行緒有可能在進入到可執行狀態後馬上又被執行,另外yield()方法只能使同優先順序或者高優先順序的執行緒得到執行機會,這也和sleep()方法不同。

81、Java中如何實現執行緒同步的?

答:1:Synchronized

         2: lock 方法

82、notify () 的作用是什麼?

答:喚醒由於使用這個同步方而處於等待執行緒的某一個結束等待

83、Java多執行緒釋放鎖的幾種方式

答:1:同步方法或者同步程式碼塊執行結束

         2:同步監視器呼叫了wait()方法

         3:同步方法或者同步程式碼塊在執行過程中發生了異常而跳出的時候

相關文章