標籤:執行 工具類 行資料 基礎資料型別 (Elementary Data Type) 輸入資料流 字元型 三向交握 普通使用者 nbsp
1、簡述Java的特點。
物件導向、跨平台性、健壯性、安全性、可移植性、多線程性、動態性等。
2、簡述JRE與JDK的區別。
JRE(Java Runtime Environment,Java運行時環境),它相當於作業系統部分,提供了Java程式運行時所需要的基本條件和許多Java基礎類,例如,IO類、GUI控制項類、網路類等。JRE是提供給普通使用者使用的,如果你只想運行別人開發好的Java程式,那麼,你的電腦上必須且只需安裝JRE。
JDK(Java Development Kit,Java開發套件),它包含編譯工具、解釋工具、文檔製作工具、打包工具多種與開發相關的工具,是提供給Java開發人員使用的。初學者學習和使用Java語言時,首先必須下載和安裝JDK。JDK中已經包含了JRE部分,初學者安裝JDK後不必再去下載和安裝JRE了。
3、請列舉Java語言中的八種基礎資料型別 (Elementary Data Type),並說明每種資料類型所佔用的空間大小。
Java語言的八種基礎資料型別 (Elementary Data Type)有:byte位元組型,佔一個位元組。short短整型,佔兩個位元組。int整型,佔4個位元組。long長整型,佔8個位元組。float單精確度浮點型,佔4個位元組。double雙精確度浮點型,佔8個位元組。char字元型,佔兩個位元組。boolean型,表示邏輯值,有true和false兩個值,分別佔一個位元組。
4、簡述&&與&的區別並舉例說明。
如果使用“&”在運算式之間進行串連,那麼無論任何情況,“&”兩邊的運算式都會參與計算。如果使用“&&”進行串連,當“&&”左邊的運算式為false,則不會執行其右邊的運算式。例如定義int x = 2,y = 0; boolean b = x < y & x / y > 0 表達是會發生被0除異常,因為x / y的運算式執行了。而boolean b = x < y && x / y > 0 是不會出現這種異常的,因為x < y為false,運算式x / y不會執行。
5、什麼是方法重載?
方法重載指的是在一個類中可以聲明多個同名的方法,而方法中參數的個數或者資料類型不一致。調用這些同名的方法時,JVM會根據實際參數的不同綁定到不同的方法。
6、構造方法和普通的成員方法有什麼區別?
構造方法是類的一個特殊成員,它會在類執行個體化對象時被自動調用。而普通方法只有在使用的時候才會被調用。在定義構造方法時要求方法名與類名相同、在方法名的前面沒有傳回值類型的聲明、在方法中不能使用return語句返回一個值
7、單例設計模式具備哪些特點?
單例模式可以保證在整個程式運行期間針對該類只存在一個執行個體對象。
8、什麼是方法重寫?
在繼承關係中,子類的方法與父類的某一方法具有相同的方法名、傳回型別和參數列表,則稱子類的該方法重寫(覆蓋)父類的方法。
9、什麼是多態?
多態意味著一個對象有著多種形態,可以在特定的情況下,表現不同的狀態,從而對應著不同的屬性和方法。簡單的說,多態就是使用父類類型的變數引用子類對象,根據被引用子類對象的特性,程式會得到不同的運行效果。
10、抽象類別和介面的區別?
在Java中,使用abstract關鍵字修飾的類稱之為抽象類別。抽象類別是不能被執行個體化的,通常需要寫一個子類來繼承抽象類別,同時執行個體化子類來獲得該類的對象。抽象類別通常用於表示一種抽象的概念。
介面可以說是一種特殊的抽象類別,介面中只能定義常量和抽象方法。由於介面的特殊性,在定義時需要使用interface關鍵字。
11、java中有幾種方法可以實現一個線程?請舉例說明。
一種是繼承java.lang包下的Thread類,覆寫Thread類的run()方法,在run()方法中實現運行線上程上的代碼。
new Thread() {
public void run(){}
}.start();
另一種就是實現java.lang.Runnable介面,同樣是在run()方法中實現運行線上程上的代碼。
new Thread(new Runnable(){
public void run(){}
}).start()
12、sleep() 和 wait() 有什麼區別?
調用sleep()方法,正在執行的線程主動讓出CPU去執行其他線程,在sleep()方法指定的時間過後,CPU才會回到這個線程上繼續往下執行,如果當前線程進入了同步鎖,sleep()方法並不會釋放鎖,即使當前線程使用sleep()方法讓出了CPU,但其它被同步鎖擋住了的線程也無法得到執行。
wait()在一個已經進入了同步鎖的線程內進行調用,讓當前線程暫時讓出同步鎖,以便其它正在等待此鎖的線程可以得到同步鎖並運行。當其它線程調用了notify()方法後,調用wait()方法的線程就會解除wait狀態,當再次獲得同步鎖後,程式可以繼續向下執行。
13、String和StringBuffer有什麼區別?
String類是不可變類,即字串值一旦初始化後就不可能改變。StringBuffer是可變字串類,類似String的緩衝區,可以修改字串的值。
14、Date和Calender類有什麼區別和聯絡?
Date類用來表示某個特定的瞬間,能夠精確到毫秒。而在實際應用中,往往需要把一個日期中的年、月、日等資訊單獨返回進行顯示或處理,這個類中的大部分方法都已被標記過時。Calender類基本取代了Date類,該類中定義了一系列用於完成日期和時間欄位操作的方法。
Calendar的getTime()方法,getTime()返回一個表示Calendar時間值的Date對象,同時Calendar有一個setTime(Date date)方法,setTime()方法接收一個Date對象,將Date對象表示的時間值設定給Calendar對象,通過這兩個方法就可以完成Date和Calendar對象之間的轉換。
15、什麼是集合,請列舉集合中常用的類和介面?
為了使程式能方便的儲存和運算元目不固定的一組資料,JDK提供了一套類庫,這些類都位於java.util包中,統稱為集合。集合架構中包含3個介面,分別是List、Set、Map。
16、集合中的List、Set、Map有什麼區別?
List的特點是元素有序、元素可重複。List介面的主要實作類別有ArrayList和LinkedList。Set的特點是元素無序、元素不可重複。Set介面的主要實作類別有HashSet和TreeSet。Map的特點是儲存的元素是鍵(Key)、值(Value)映射關係,元素都是成對出現的。Map介面的主要實作類別有HashMap和TreeMap。
17、請說說Collection和Collections的有什麼區別?
Collection是一個單例集合介面。它提供了對集合對象進行基本操作的通用方法。Collections是一個工具類。它包含各種有關集合操作的方法。
18、簡述流的概念。
Java程式通過流來完成輸入和輸出,流是輸入或輸出資訊的抽象。流通過Java的輸入/輸出系統與外設串連進行資料通訊。流是抽象的對象,具體實現代碼在java.io包中。
19、Java流被分為位元組流、字元流兩大流類,兩者有什麼區別?
位元組流的兩個基類是InputStream和OutputStream,字元流的兩個基類是Reader和Writer,它們都是Object類的直接子類,位元組流是處理以8位位元組為基本單位的位元組流類;Reader和Writer類是專門處理16位位元組的字元流類。
20、簡要說明管道流。
管道流分為管道輸入資料流(PipedInputStream)和管道輸出資料流(PipedOutputStream),通常由一個PipedInputStream執行個體對象和一個PipedOutputStream執行個體對象相互串連而實現管道通訊,PipedOutputStream向管道寫入資料,PipedInputStream從管道中讀取PipedOutputStream寫入的資料,管道流主要用來完成線程之間的通訊。
21、請簡述GUI中實現事件監聽的步驟。
通過實現XxxListener介面或者繼承XxxAdapter類實現一個事件監聽器類,並對處理監聽動作的方法進行重寫
建立事件來源對象和事件監聽器對象
呼叫事件源的addXxxLisntener()方法,為事件來源註冊事件監聽器對象
22、AWT和Swing的區別
AWT 是Abstract Window ToolKit (抽象視窗工具包)的縮寫,這個工具包提供了一套與本地圖形介面進行互動的介面。AWT 中的圖形函數與作業系統所提供的圖形函數之間有著一一對應的關係,當我們利用 AWT 來構件圖形化使用者介面的時候,我們實際上是在利用作業系統所提供的圖形庫。由於不同作業系統的圖形庫所提供的功能是不一樣的,在一個平台上存在的功能在另外一個平台上則可能不存在。為了實現Java語言所宣稱的"一次編譯,到處運行"的概念,AWT 不得不通過犧牲功能來實現其平台無關性,也就是說,AWT 所提供的圖形功能是各種通用型作業系統所提供的圖形功能的交集。由於AWT 是依靠本地方法來實現其功能的,我們通常把AWT控制項稱為重量級控制項。
Swing 是在AWT的基礎上構建的一套新的圖形介面系統,它提供了AWT 所能夠提供的所有功能,並且用純粹的Java代碼對AWT 的功能進行了大幅度的擴充。由於在Swing 中沒有使用本地方法來實現圖形功能,我們通常把Swing控制項稱為輕量級控制項。
AWT和Swing之間的基本區別:AWT 是基於本地方法的C/C++程式,其運行速度比較快;Swing是基於AWT 的Java程式,其運行速度比較慢。對於一個嵌入式應用來說,目標平台的硬體資源往往非常有限,而應用程式的運行速度又是項目中至關重要的因素。在這種矛盾的情況下,簡單而高效的AWT 當然成了嵌入式Java的第一選擇。而在普通的基於PC或者是工作站的標準Java應用中,硬體資源對應用程式所造成的限制往往不是項目中的關鍵因素,所以在標準版的Java中則提倡使用Swing,也就是通過犧牲速度來實現應用程式的功能。
23、網路通訊協定是什嗎?
在Internet中傳輸資料都需要遵守一定的規則,這種規則通常被稱作網路通訊協定。網路通訊協定對資料轉送格式、傳輸速率、傳輸步驟等作了統一規定,通訊雙方必須共同遵守這個規定才能完成資料的互動。到目前為止,網路通訊協定已經有很多種,其中TCP/UDP協議在世界範圍內應用最為廣泛。
24、TCP協議和UDP協議有什麼區別?
UDP協議是無串連通訊協定,所謂的無串連就是指資料的發送端和接收端不建立邏輯串連。由於UDP協議消耗資源小,通訊效率高,通常都會用於音頻、視頻和普通資料的傳輸。UDP協議在傳輸資料時不能保證資料的完整性,因此在傳輸重要資料時不建議使用UDP協議。
TCP協議是連線導向的通訊協定,即在傳輸資料前先在發送端和接收端建立邏輯串連,然後再傳輸資料,它提供了兩台電腦之間可靠無差錯的資料轉送。在TCP串連中必須要明確用戶端與伺服器端,由用戶端向服務端發出串連請求,每次串連的建立都需要經過“三向交握”。
25、Socket類和ServerSocket類各有什麼作用?
ServerSocket類用於建立服務端程式,通過調用ServerSocket對象的accept()方法,接收來自用戶端的請求。
Socket類用於建立用戶端程式,當用戶端和服務端的兩個Socket建立了專線串連後,串連的一端既能向另一端連續寫入位元組,也能從另一端讀取位元組。Socket類中定義了getInputStream()方法返回Socket的輸入資料流對象,定義了getOutputStream()方法返回Socket的輸出資料流對象。只要串連的一端向該輸出資料流對象寫入了資料,串連的另一端就能從其輸入資料流對象中讀取到。
Java課後簡答題