JavaOO知識點小結一

Java語言的特色是什麼?
簡單 面向對象 跨平臺 多線程 健壯性安全性 垃圾回收機制
如何編譯和執行java文件?產生幫助文檔用什麼命令?
編譯: javac 文件名
執行: java 類名
產生幫助文檔 javadoc 文件名java

虛擬機的工做流程是什麼?
編寫源文件(*.java)------編譯成*.class字節碼文件------類加載--------字節碼校驗----解釋器----操做系統。
main方法怎麼書寫?
Public static void main(String[] aaa){}
Static public void main(String sss[]){}算法

什麼是標識符?標識符有幾種?標識符的命名規則是什麼?
凡是能夠命名的地方叫標識符。咱們可使用標識符命名類、方法、變量。
標識符分兩種:系統標識符(關鍵字)和用戶標識符。
標識符命名規則:以字母、數字、下劃線、$組成。不能以數字開始。數組

Java中基本數據類型有哪些?各佔幾個字節?Java中引用數據類型有哪些?基本類型和引用類型的區別是什麼?
Java基本數據類型,變量自己存放數據。byte(1)取值在-128~127。Short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean(1)安全

Java引用類型,變量存放對象的地址。類、數組,接口。
基本類型中存放具體的數據,引用類型存放對象的地址多線程

Java中char類型用什麼編碼?
unicode
變量三要素是什麼?
變量類型 變量名 變量值
Java的註釋有幾種?
//單行註釋
/* */多行註釋
/** */文檔註釋框架

定義常量用什麼關鍵字?
final
什麼是對象?什麼是類?對象和類的關係是什麼?
對象是存在的一個實體,具備明確的特徵和行爲。
類是具備相同特徵和行爲的一組對象的集合。
類是對象的抽象。對象是類的實例和具體表現。佈局

變量按做用域劃分有哪幾種?局部變量使用時須要注意什麼問題?
局部變量、成員變量(屬性)、靜態變量(類變量)
局部變量使用前須要注意:一、變量必須初始化 二、做用域 三、局部變量的修飾符只能是默認,或finalthis

靜態變量和成員變量有什麼區別?應該怎麼調用?
成員變量從屬於對象,是對象的一部分,放在堆中。
靜態變量是不少對象共享的,放在數據段中。編碼

成員變量是對象特有的,彼此獨立,一個對象成員變量值的更改,不會影響別的對象。
靜態變量是對象共享的,一個對象更改後,會影響全部的對象。操作系統

靜態變量在類加載時產生,加載時機在對象以前;成員變量在對象產生時加載。因此靜態方法不能直接訪問成員方法。

成員變量調用經過 對象名.成員變量
靜態變量調用經過 對象名.靜態變量 類名.靜態變量

垃圾回收GC回收什麼樣的對象?
回收沒有被變量指向的對象。

什麼是包?包的做用是什麼?如何導入別的包中的類?什麼樣的類不須要導入?
包就是文件夾。經過包能夠組織相關的類、能夠做到信息隱藏。
import 類的全路徑;(包名+類名)
本包中的類和java.lang.*無需導入能夠直接使用。

靜態方法能直接調用成員方法或屬性嗎?爲何?
不行。靜態的東西加載時機在對象以前。

當傳遞和返回對象,傳遞和返回的是什麼?
引用。

什麼是構造方法?構造方法的做用是什麼?
構造方法的方法名和類名相同,沒有返回類型。
做用:一、爲對象分配空間
二、若是該類沒有加載,則加載類。
三、初始化成員變量
四、返回引用。

建立對象有幾種方式?
new 類名(); 反射:Class對象.newInstance() 克隆(經過Object中clone())
反序列化(調用ObjectInputStream中readObject())

this和super各表明什麼含義?
this表示當前對象。super表示父類對象。
數組如何定義?數組、字符串、集合各自的長度如何得到?
int[] I = new int[3]; int[] I = {1,2,3};

數組長度:length屬性
字符串長度:length()方法
集合長度:size()方法

 


數組有哪些特色?
數組是一個連續的空間,經過下標訪問元素,下標從0開始,最大下標爲長度-1;
數組的元素都是變量,變量的類型就是定義數組的類型。
數組的元素在建立時都會作初始化。int----0 double----0.0 引用類型----null
數組的長度不可改變。

私有屬性+get/set方法和公有屬性的區別
私有屬性+get/set方法,能夠在設置屬性值以前,作出數據合法性驗證,公有屬性沒法作到。
私有屬性+get/set方法,能夠刪除get或set方法,讓屬性成爲只讀或只寫屬性,公有屬性沒法作到。


繼承用什麼關鍵字?子類繼承父類,構造方法第一句應該如何書寫?
繼承使用extends關鍵字。子類繼承父類,構造方法第一句是super(),產生父類對象,在父類對象基礎上擴展子類的方法和屬性。

重寫和重載的區別是什麼?重寫有什麼要求?
重載發生在同一個類中,方法名相同,參數列表不一樣(參數的類型、參數的個數、參數的順序),和返回類型無關。
重寫發生在父類和子類之間。方法名相同,參數列表相同,返回類型也相同。訪問修飾符子類要大於或等於父類,而拋出的異常,子類要小於或等於父類。子類重寫了父類的方法,在調用時會優先調用子類重寫的方法。

Java中一個類能同時繼承多個類嗎?全部類的父類是什麼?
不能,在java中類只能單根繼承,全部類的父類是Object。

構造方法能繼承嗎?構造方法能重載嗎?
構造方法不能繼承,但能夠被子類所調用。構造方法能夠重載。

final、finally、finalize的區別是什麼?
final能夠修飾類、方法、變量。修飾類,表示該類不能被繼承。修飾方法,表示該方法不能被子類重寫。修飾變量表示該變量是常量,內容不能更改。
finally是異常處理時,不管是否有異常都會執行的代碼塊。通常做資源回收。
finalize是Object中定義的方法。在垃圾回收該對象以前,會執行該方法。

訪問修飾符有哪些?各自做用範圍是什麼?
private(私有) 只能在本類中訪問
默認 本包中能夠訪問
protected(受保護類) 本包和不一樣包的子類能夠訪問
public (公有) 全部的類均可訪問。

什麼是內部類?內部類class文件是怎樣命名的?
內部類就是在一個類中再定義一個類。內部類至關於外部類的屬性,能夠有public 、private、protected、static。它的產生必須依賴於外部類的對象。
內部類class文件命名 外部類名$內部類名.class
什麼是多態?多態有什麼特色?
多態是指能夠用父類變量指向子類對象,能夠用接口變量指向實現類對象。
多態的特色:相同的行爲不一樣的表現方式,能夠動態綁定子類的行爲。

面向對象的特徵有哪些?
繼承、封裝、多態、抽象

什麼是抽象類?什麼是抽象方法?定義抽象類的關鍵字是什麼?
若是一個方法在定義時,只有方法定義,沒有方法實現,這個方法叫作抽象方法,擁有抽象方法的類叫抽象類。抽象類是不能直接實例化的。定義抽象類的關鍵字是abstract


接口如何定義?實現接口用什麼關鍵字?一個類實現接口必須作什麼?
接口定義用interface。
實現接口用implements
一個類實現接口,必須實現接口中全部的抽象方法,不然該類只能是抽象類。

接口中定義的方法修飾符是什麼?接口中定義的變量修飾符是什麼?
接口中方法修飾符是 public abstract
接口中變量修飾符是 public static final

抽象類和接口的區別是什麼?
抽象類能夠有方法的定義(抽象方法),也能夠有方法的實現(具體方法)。而接口中只能有方法的定義。
抽象類中的變量是屬性,而接口中的變量是public static final
抽象類只能被單根繼承,而接口能夠多實現。

異常的API結構是怎樣的?Error和Exception有什麼區別?
Throwable父類,下面兩個子類,Error(錯誤,能捕獲,不能處理)和Exception(異常,能捕獲,能處理)

異常的執行順序怎樣?若是在try塊中有return,finally會執行嗎?
先執行try塊,順序執行,若是有異常,轉去catch塊執行,同時停止try塊中其餘代碼。不管是否有異常,都會執行finally內容。若是在try塊或catch塊有return,finally一樣會執行,在跳出方法前執行。

finally是否在任什麼時候候都會執行?
不是,在虛擬機關閉時不會執行。System.exit(0);

throw 和throws的區別是什麼?
throw是語句,表示顯示拋出異常對象 throw new Exception();
throws是方法修飾符,表示該方法可能要拋出某種異常,調用該方法時,就須要處理該方法拋出的異常。

異常分爲幾種?如何區分?
異常分爲編譯期異常、運行期異常。編譯期異常,必需要處理,不然編譯沒法經過。運行期異常可處理,可不處理,全部的運行期異常都是RuntimeException的子類。

如何獲得當前工做目錄?
System.getProperty(「user.dir」);

String x = "abc" 和 String x = new String("abc")有什麼區別?
String x = 「abc」。x指向數據段中的字符串常量。
String x = new String(「abc」); x指向堆中的字符串對象。但該對象必須以對應字符串常量爲模版。

String和StringBuffer的區別?
String具備長度不能夠變的特性,當對字符串做添加、刪除、替換會產生新對象。
而StringBuffer是緩衝區的對象,當對其進行添加、刪除、替換時不會產生新對象。

如何將字符串轉化爲基本數據類型?
int x = Integer.parseInt(「23」);
double x = Double.parseDouble(「23.3」);

如何將日期對象進行"2011-12-10"格式化輸出?如何將"2011-12-10"字符串轉化爲日期類型?
SimpleDateFormat s = new SimpleDateFormat(「yyyy-MM-dd」);
String str = s.format(new Date());
Date date = s.parse(「2011-12-10」);

javaBean規範有哪些內容?
有公共的無參構造方法。
私有屬性加上get/set方法進行訪問和設置。
對象是可序列化的。

什麼是反射?
反射是在編譯時,不清楚應該加載哪一個類,類的加載是在運行期進行的。經過反射我能夠對類進行加載、探知、自審。

如何獲得Class對象?如何利用Class對象產生該類的對象?
類名.class 對象名.getClass() Class.forName(「類的全路徑」)

Class對象.newInstance();

線程和進程的區別?
進程有本身獨立的內存空間,進程一開啓就會消耗內存。而線程是進程內部的順序控制流。多個線程共享一個進程內存空間。

建立線程有幾種方式?如何啓動線程?調用start()和調用run()的區別?
建立線程:一、繼承Thread類,重寫run() 二、實現Runnable接口,實現run()。
啓動線程:start();
啓動線程用start,這時會在主線程以外產生新的線程,多個任務同時執行。而直接調用run(),不會產生新線程。


線程有幾種狀態?
新建 就緒 運行 死亡 休眠 等待 掛起 阻塞

什麼是線程優先級?分爲幾級?
當兩個或兩個以上的線程同時要求啓動時,優先級高的線程優先獲得CPU的使用權。優先級分爲10級,數字越大,優先級越高。

什麼是線程同步?同步會形成什麼結果?
線程同步是指當兩個或兩個以上的線程同時訪問同一個資源,爲了保護數據的安全,只容許在同一時間一個線程去訪問。
線程同步會形成一、數據安全 二、效率低下。

wait和sleep的區別?
sleep在Thread中定義,而wait在Object中定義。
wait只能放在同步方法或同步塊中,而sleep能夠放在任何位置。
wait會釋放對象鎖,而sleep不會。
wait須要喚醒線程纔會繼續執行,而sleep在休眠結束後,自動恢復運行。

集合的做用是什麼?集合框架的API結構是怎樣的?
集合的做用是對數據進行存儲、檢索、操做、傳輸。
集合框架分爲:接口、實現類、算法。
接口:Collection爲父接口,下面兩個子接口:List、Set,另外還有Map接口

List、Set、Map集合各自有什麼特色?
List特色:線性,元素能夠重複
Set特色:元素不可重複
Map特色:鍵值對,一個元素包含兩個對象。鍵不能重複。

集合元素如何添加?如何刪除?如何遍歷?
添加:add() put()
刪除:remove()

遍歷:
for(int i =0;i<list.size();i++){
Object obj = list.get(i);
}

Iterator it = list.iterator();
while(it.hasNext()){
Object obj = it.next();
}

for(Object obj : list){
}

List接口實現類ArrayList、Vector、LinkedList的區別?HashMap和Hashtable區別?
ArrayList底層由數組實現。是連續的空間,遍歷、尾部追加速度快,中間插入、刪除速度慢。
Vector底層也由數組實現。是線程安全的類。
LinkedList是不連續空間,中間插入、刪除速度快,遍歷速度慢。

HashMap容許空鍵和空值,線程不安全。Hashtable不容許空鍵和空值,線程安全。

集合如何進行排序?
Collections.sort(list,Comparator c);

awt和swing有什麼區別?
awt是利用操做系統的風格構建組件,跨平臺時顯示風格不一致。
swing是單獨的組件,跨平臺時風格一致。

GUI常見佈局管理器有哪些?
絕對佈局,邊框佈局,流式佈局,網格佈局

如何進行事件的添加?
肯定事件源,肯定監聽器(實現監聽接口) 註冊(創建事件源和監聽器的聯繫)

流按照輸入輸出方向分有幾種?相對於什麼而言?流按照輸入輸出方向分有兩種,相對於內存而言,當將數據從數據源中讀取到內存時,叫讀取流。當將數據從內存寫入數據源時,叫寫入流。

相關文章
相關標籤/搜索