Java SE基礎是知識彙總

1、Java語言的特點是什麼?
簡單  面向對象   跨平臺    多線程   健壯性安全性   垃圾回收機制
2、如何編譯和執行java文件?產生幫助文檔用什麼命令?
編譯:   javac    文件名
執行:   java     類名
產生幫助文檔   javadoc  文件名
 
3、虛擬機的工作流程是什麼?
編寫源文件(*.java)------編譯成*.class字節碼文件------類加載--------字節碼校驗----解釋器----操作系統。
4、main方法怎麼書寫?
Public  static  void main(String[]  aaa){}
Static  public  void main(String sss[]){}
 
5、什麼是標識符?標識符有幾種?標識符的命名規則是什麼?
凡是可以命名的地方叫標識符。我們可以使用標識符命名類、方法、變量。
標識符分兩種:系統標識符(關鍵字)和用戶標識符。
標識符命名規則:以字母、數字、下劃線、$組成。不能以數字開始。
 
6、Java中基本數據類型有哪些?各佔幾個字節?Java中引用數據類型有哪些?基本類型和引用類型的區別是什麼?
Java基本數據類型,變量本身存放數據。byte(1)取值在-128~127Short(2)int(4)long(8)float(4)double(8)char(2)boolean(1)
 
Java引用類型,變量存放對象的地址。類、數組,接口。
基本類型中存放具體的數據,引用類型存放對象的地址
 
7、Javachar類型用什麼編碼?
unicode
8、變量三要素是什麼?
變量類型   變量名    變量值
9、Java的註釋有幾種?
//單行註釋
/*     */多行註釋
/**     */文檔註釋
 
10、定義常量用什麼關鍵字?
final
11、什麼是對象?什麼是類?對象和類的關係是什麼?
對象是存在的一個實體,具有明確的特徵和行爲。
類是具有相同特徵和行爲的一組對象的集合。
類是對象的抽象。對象是類的實例和具體表現。
 
12、變量按作用域劃分有哪幾種?局部變量使用時需要注意什麼問題?
局部變量、成員變量(屬性)、靜態變量(類變量)
局部變量使用前需要注意:1、變量必須初始化   2、作用域    3、局部變量的修飾符只能是默認,或final
 
13、靜態變量和成員變量有什麼區別?應該怎麼調用?
成員變量從屬於對象,是對象的一部分,放在堆中。
靜態變量是很多對象共享的,放在數據段中。
 
成員變量是對象特有的,彼此獨立,一個對象成員變量值的更改,不會影響別的對象。
靜態變量是對象共享的,一個對象更改後,會影響所有的對象。
 
靜態變量在類加載時產生,加載時機在對象之前;成員變量在對象產生時加載。所以靜態方法不能直接訪問成員方法。
 
成員變量調用通過對象名.成員變量
靜態變量調用通過對象名.靜態變量    類名.靜態變量
 
14、垃圾回收GC回收什麼樣的對象?
回收沒有被變量指向的對象。
 
15、什麼是包?包的作用是什麼?如何導入別的包中的類?什麼樣的類不需要導入?
包就是文件夾。通過包可以組織相關的類、可以作到信息隱藏。
import   類的全路徑;(包名+類名)
本包中的類和java.lang.*無需導入可以直接使用。
 
16、靜態方法能直接調用成員方法或屬性嗎?爲什麼?
不行。靜態的東西加載時機在對象之前。
 
17、當傳遞和返回對象,傳遞和返回的是什麼?
引用。
 
18、什麼是構造方法?構造方法的作用是什麼?
構造方法的方法名和類名相同,沒有返回類型。
作用:1、爲對象分配空間
  2、如果該類沒有加載,則加載類。
  3、初始化成員變量
  4、返回引用。
 
19、創建對象有幾種方式?
new類名();     反射:Class對象.newInstance()     克隆(通過Objectclone()
反序列化(調用ObjectInputStreamreadObject()
 
20、thissuper各代表什麼含義?
   this表示當前對象。super表示父類對象。
21、數組如何定義?數組、字符串、集合各自的長度如何獲得?
int[]   I = new int[3];      int[]  I = {1,2,3};
 
數組長度:length屬性
字符串長度:length()方法
集合長度:size()方法
 
 
 
 
22、數組有哪些特點?
1、 數組是一個連續的空間,通過下標訪問元素,下標從0開始,最大下標爲長度-1;
2、 數組的元素都是變量,變量的類型就是定義數組的類型。
3、 數組的元素在創建時都會做初始化。int----0   double----0.0    引用類型----null
4、 數組的長度不可改變。
 
23、私有屬性+get/set方法和公有屬性的區別
私有屬性+get/set方法,可以在設置屬性值之前,做出數據合法性驗證,公有屬性無法做到。
私有屬性+get/set方法,可以刪除getset方法,讓屬性成爲只讀或只寫屬性,公有屬性無法做到。
 
 
24、繼承用什麼關鍵字?子類繼承父類,構造方法第一句應該如何書寫?
繼承使用extends關鍵字。子類繼承父類,構造方法第一句是super(),產生父類對象,在父類對象基礎上擴展子類的方法和屬性。
 
25、重寫和重載的區別是什麼?重寫有什麼要求?
重載發生在同一個類中,方法名相同,參數列表不同(參數的類型、參數的個數、參數的順序),和返回類型無關。
重寫發生在父類和子類之間。方法名相同,參數列表相同,返回類型也相同。訪問修飾符子類要大於或等於父類,而拋出的異常,子類要小於或等於父類。子類重寫了父類的方法,在調用時會優先調用子類重寫的方法。
 
26、Java中一個類能同時繼承多個類嗎?所有類的父類是什麼?
不能,在java中類只能單根繼承,所有類的父類是Object
 
27、構造方法能繼承嗎?構造方法能重載嗎?
構造方法不能繼承,但可以被子類所調用。構造方法可以重載。
 
28、finalfinallyfinalize的區別是什麼?
final可以修飾類、方法、變量。修飾類,表示該類不能被繼承。修飾方法,表示該方法不能被子類重寫。修飾變量表示該變量是常量,內容不能更改。
finally是異常處理時,無論是否有異常都會執行的代碼塊。一般作資源回收。
finalizeObject中定義的方法。在垃圾回收該對象之前,會執行該方法。
 
29、訪問修飾符有哪些?各自作用範圍是什麼?
private(私有)  只能在本類中訪問
默認    本包中可以訪問
protected(受保護類)本包和不同包的子類可以訪問
public (公有)所有的類都可訪問。
 
30、什麼是內部類?內部類class文件是怎樣命名的?
內部類就是在一個類中再定義一個類。內部類相當於外部類的屬性,可以有publicprivateprotectedstatic。它的產生必須依賴於外部類的對象。
內部類class文件命名   外部類名$內部類名.class
31、什麼是多態?多態有什麼特點?
多態是指可以用父類變量指向子類對象,可以用接口變量指向實現類對象。
多態的特點:相同的行爲不同的表現方式,可以動態綁定子類的行爲。
 
32、面向對象的特徵有哪些?
繼承、封裝、多態、抽象
 
33、什麼是抽象類?什麼是抽象方法?定義抽象類的關鍵字是什麼?
如果一個方法在定義時,只有方法定義,沒有方法實現,這個方法叫做抽象方法,擁有抽象方法的類叫抽象類。抽象類是不能直接實例化的。定義抽象類的關鍵字是abstract
 
 
34、接口如何定義?實現接口用什麼關鍵字?一個類實現接口必須做什麼?
接口定義用interface
實現接口用implements
一個類實現接口,必須實現接口中所有的抽象方法,否則該類只能是抽象類。
 
35、接口中定義的方法修飾符是什麼?接口中定義的變量修飾符是什麼?
接口中方法修飾符是 public  abstract
接口中變量修飾符是 public static final
 
36、抽象類和接口的區別是什麼?
1、 抽象類可以有方法的定義(抽象方法),也可以有方法的實現(具體方法)。而接口中只能有方法的定義。
2、 抽象類中的變量是屬性,而接口中的變量是public static final
3、 抽象類只能被單根繼承,而接口可以多實現。
 
37、異常的API結構是怎樣的?ErrorException有什麼區別?
Throwable父類,下面兩個子類,Error(錯誤,能捕獲,不能處理)Exception(異常,能捕獲,能處理)
 
38、異常的執行順序怎樣?如果在try塊中有returnfinally會執行嗎?
先執行try塊,順序執行,如果有異常,轉去catch塊執行,同時中止try塊中其他代碼。無論是否有異常,都會執行finally內容。如果在try塊或catch塊有returnfinally同樣會執行,在跳出方法前執行。
 
39、finally是否在任何時候都會執行?
不是,在虛擬機關閉時不會執行。System.exit(0);
 
40、throwthrows的區別是什麼?
throw是語句,表示顯示拋出異常對象  throw new Exception();
throws是方法修飾符,表示該方法可能要拋出某種異常,調用該方法時,就需要處理該方法拋出的異常。
 
41、異常分爲幾種?如何區分?
異常分爲編譯期異常、運行期異常。編譯期異常,必須要處理,否則編譯無法通過。運行期異常可處理,可不處理,所有的運行期異常都是RuntimeException的子類。
 
42、如何得到當前工作目錄?
System.getProperty(user.dir);
 
43、String x = "abc"String x = new String("abc")有什麼區別?
String x =abcx指向數據段中的字符串常量。
String x = new String(abc); x指向堆中的字符串對象。但該對象必須以對應字符串常量爲模版。
 
1、StringStringBuffer的區別?
String具有長度不可以變的特性,當對字符串作添加、刪除、替換會產生新對象。
StringBuffer是緩衝區的對象,當對其進行添加、刪除、替換時不會產生新對象。
 
2、如何將字符串轉化爲基本數據類型?
int x = Integer.parseInt(23);
double x = Double.parseDouble(23.3);
 
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);
 
4、javaBean規範有哪些內容?
1、 有公共的無參構造方法。
2、 私有屬性加上get/set方法進行訪問和設置。
3、 對象是可序列化的。
 
5、什麼是反射?
反射是在編譯時,不清楚應該加載哪個類,類的加載是在運行期進行的。通過反射我可以對類進行加載、探知、自審。
 
6、如何得到Class對象?如何利用Class對象產生該類的對象?
類名.class          對象名.getClass()       Class.forName(“類的全路徑)
 
Class對象.newInstance();
 
7、線程和進程的區別?
進程有自己獨立的內存空間,進程一開啓就會消耗內存。而線程是進程內部的順序控制流。多個線程共享一個進程內存空間。
 
8、創建線程有幾種方式?如何啓動線程?調用start()和調用run()的區別?
創建線程:1、繼承Thread類,重寫run()   2、實現Runnable接口,實現run()
啓動線程:start();
啓動線程用start,這時會在主線程之外產生新的線程,多個任務同時執行。而直接調用run(),不會產生新線程。
 
 
9、線程有幾種狀態?
新建     就緒    運行     死亡      休眠    等待    掛起   阻塞
 
10、什麼是線程優先級?分爲幾級?
當兩個或兩個以上的線程同時要求啓動時,優先級高的線程優先得到CPU的使用權。優先級分爲10級,數字越大,優先級越高。
 
11、什麼是線程同步?同步會造成什麼結果?
線程同步是指當兩個或兩個以上的線程同時訪問同一個資源,爲了保護數據的安全,只允許在同一時間一個線程去訪問。
線程同步會造成1、數據安全  2、效率低下。
 
12、waitsleep的區別?
1、 sleepThread中定義,而waitObject中定義。
2、 wait只能放在同步方法或同步塊中,而sleep可以放在任何位置。
3、 wait會釋放對象鎖,而sleep不會。
4、 wait需要喚醒線程纔會繼續執行,而sleep在休眠結束後,自動恢復運行。
 
13、集合的作用是什麼?集合框架的API結構是怎樣的?
集合的作用是對數據進行存儲、檢索、操作、傳輸。
集合框架分爲:接口、實現類、算法。
接口:Collection爲父接口,下面兩個子接口:ListSet,另外還有Map接口
 
14、ListSetMap集合各自有什麼特點?
List特點:線性,元素可以重複
Set特點:元素不可重複
Map特點:鍵值對,一個元素包含兩個對象。鍵不能重複。
 
15、集合元素如何添加?如何刪除?如何遍歷?
添加:add()   put()
刪除:remove()
 
遍歷:
1、 for(int  i =0;i<list.size();i++){
Object  obj = list.get(i);
}
 
2、 Iterator  it = list.iterator();
while(it.hasNext()){
Object obj = it.next();
}
 
3、 for(Object  obj  :  list){
}
 
16、List接口實現類ArrayListVectorLinkedList的區別?HashMapHashtable區別?
ArrayList底層由數組實現。是連續的空間,遍歷、尾部追加速度快,中間插入、刪除速度慢。
Vector底層也由數組實現。是線程安全的類。
LinkedList是不連續空間,中間插入、刪除速度快,遍歷速度慢。
 
HashMap允許空鍵和空值,線程不安全。Hashtable不允許空鍵和空值,線程安全。
 
17、集合如何進行排序?
Collections.sort(list,Comparator c);
 
18、awtswing有什麼區別?
awt是利用操作系統的風格構建組件,跨平臺時顯示風格不一致。
swing是單獨的組件,跨平臺時風格一致。
 
19、GUI常見佈局管理器有哪些?
絕對佈局,邊框佈局,流式佈局,網格佈局
 
20、如何進行事件的添加?
確定事件源,確定監聽器(實現監聽接口)   註冊(建立事件源和監聽器的聯繫)
 
21、流按照輸入輸出方向分有幾種?相對於什麼而言?
流按照輸入輸出方向分有兩種,相對於內存而言,當將數據從數據源中讀取到內存時,叫讀取流。當將數據從內存寫入數據源時,叫寫入流。
 
22、流按照傳輸內容分有幾種?各自的父類是什麼?
流按照傳輸內容有字節流、字符流、對象流。但其本質都是字節流。字符流和對象流是在字節流基礎上作了一層封裝,以便更好對字符和對象進行操作。
 
字節流的父類:InputStreamOutputStream
字符流的父類:ReaderWriter
 
23、操作流時,如果文件不存在會出現什麼情況?如果流不關閉會出現什麼情況?
操作流時,如果文件不存在,對於讀取流而言,會拋出文件未找到異常。對於寫入流而言,會創建新文件。如果流使用完成後不關閉,會浪費內存資源。而且對於寫入流而言,如果流不關閉也不刷新,有可能寫不進數據。
 
24、如何判斷一個文件是否存在?如何創建一個目錄?如何知道一個目錄中有多少文件?
使用File類中exists()判斷文件是否存在。
創建新目錄:mkdir();
列出目錄中的文件:listFiles();
 
25、什麼是對象序列化?如何實現對象序列化?
當需要傳輸對象時,由於對象中數據很龐大,所以需要將對象打散成字節序列,以利傳輸。這個過程叫做序列化。到達目的地時,又需要將字節序列還原成對象,叫反序列化。
這時,需要序列化的對象必須實現java.io.Serializable接口
 
26、TCP/IP協議分爲幾層?
TCP/IP分爲四層:應用層、傳輸層、網絡層、網絡接口層
 
27、什麼是端口?常見端口有哪些?
端口是一個應用程序輸入輸出數據的通道。每個應用程序都會有固定的端口。
常見的端口:Telnet協議:23    ftp21   smtp25    http80
 
28、TCPUDP的區別是什麼?掌握TCP編程流程。
TCP是比較可靠的傳輸協議,提供三次握手機制,如果信息在傳輸中丟失或耗損,會要求發送方重新發送,保證數據傳輸的完整性。
UDP是比較不可靠的傳輸協議,當信息在傳輸中丟失或耗損,不會要求發送方重新發送。優點是速度快。
 
29、什麼是XMLXML聲明是怎樣的?XML註釋是怎樣的?
XML叫做可擴展的標識語言,以標記和子標記的方式描述對象。
聲明<?xml  version=1.0   encoding=utf-8?>
註釋<!--     - ->
 
30、一個格式良好的XML有哪些規定?
1、 必須要有聲明
2、 有且只有一個根元素
3、 大小寫區分
4、 屬性必須加引號
5、 標記成對出現
6、 標記要正確嵌套。
7、 空標記要關閉
 
74、格式良好的XML和有效的XML有什麼區別?
有效的XML除了滿足XML基本規範外,還要滿足DTDSchema定義的元素規則。有效的XML一定是格式良好的XML,但格式良好的XML不一定有效。
 
75DOMSAX有什麼區別?
DOM是以樹狀方式的一套API,可以讀取可以寫入;可以隨機訪問XML中元素;大型文檔佔用內存較多。
SAX是一套基於事件方式的API。佔用內存小,只能讀取不能寫入,不能隨機訪問元素,文檔只能遍歷一次。
 
76、靜態塊和實例化塊分別在什麼時候執行?
靜態塊在類加載時執行,只執行一次。實例化塊在產生對象時執行。每產生一個對象,就執行一次,在super()之後執行。
 
77、什麼是一對一、一對多、多對多?
 一對一指的是一條主表記錄對應一條從表記錄。一對多指的是一條主表記錄對應多條從表記錄。多對多指的是一條主表記錄對應多條從表記錄,同時一條從表記錄也對應多條主表記錄,通過中間表來描述多對多關係。
 
78、數據庫完整性有哪些?
  實體完整性:每條記錄都要有所區別,不能存在一模一樣的記錄。通過主鍵和唯一約束實現
  域完整性:保證每一列的值是有效的。通過默認約束、非空約束和檢查約束實現
  引用完整性:保證從表的外鍵必須引用主表的主鍵。通過外鍵約束實現
  用戶自定義完整性:用戶自定義的規則
 
79、什麼是主鍵,主鍵有什麼特點?
   主鍵是用於標識一個表中兩條記錄不能完全一樣的列,它有兩個特點:非空和值不能重複。
 
80、什麼是外鍵,它和外鍵約束有什麼區別
   外鍵是指從表的某列與主表的某列存在的關聯關係
   外鍵約束是指在從表的外鍵列上加上一個約束,強制要求從表的外鍵必須引用主表的主鍵。如果違反該約束,則不允許該條數據的添加修改。
 
81、增、刪、改、查的基本SQL語句
   添加:insert into表名(字段列表)  values()
   刪除:delete from表名 where id=1
   修改:update表名 set字段名=新值where id=1
   查詢:select  * from表名
 
82DELETETRUNCATE的區別
   Delete可以有選擇性的對記錄進行刪除,要寫日誌文件,可以回滾刪除的記錄
   Truncate只能清空表中所有記錄,不寫日誌文件,刪除的記錄不能回滾,但執行效率高。
 
83、排除重複記錄用什麼關鍵字?如何限制查詢數據的返回限定行數?
   DISTINCT
  Select * from表名  limit   0,3;
 
 
84、如何查詢null
  查詢null值用is null is not null
 
85SQL語句的聚合函數有哪些?
   Count:統計行數量              Sum:計算單個列的總和
   Avg:計算單個列的平均值        Max:計算單個列的最大值
   Min:計算單個列的最小值
 
86、在分組語句中,查詢的列可以有哪些?
只能有分組字段列和聚合函數
 
87wherehaving的區別
   Where在分組之前執行,所以不能使用聚合函數。Having在分組之後執行,對分組的結果進行條件過濾,只能用聚合函數。
 
88、描述SQL查詢語句執行順序
第一步:執行FROM
第二步:WHERE條件過濾
第三步:GROUP BY分組
第四步:執行SELECT投影列
第五步:HAVING條件過濾
第六步:執行ORDER BY排序
 
89、內連接和外連接區別
   內聯接是指使用比較運算符根據每個表共有的列的值匹配兩個表中的行。
外聯接是指不管有沒有匹配,被定義了外聯接的表數據都要出現在結果中。
  內連接:
   Select   e.*,d.deptName  from t_employee e,t_dept d where e.deptId=d.id;
   Select   e.*,d.deptName  from t_employee e  join  t_dept d on e.deptId=d.id;
  外連接:
Select   e.*,d.deptName  from t_employee e  left  join  t_dept d on e.deptId=d.id;
 
90、什麼是JDBC
   JDBCJAVA連接數據庫的一套規範。該規範定義了一系列的接口,由數據庫廠商實現,由用戶根據接口調用。用戶根據接口方法就可以屏蔽不同數據庫的差異,無論連接什麼數據庫都是一套API
 
91JDBC開發流程
   加載驅動
   建立連接
   執行SQL語句
   關閉連接
 
92、什麼是SQL注入
SQL注入是指在執行SQL語句時,如果以拼接字符串方式進行值的注入,那麼如果值中有非法字符或數據庫關鍵字時,就會導致執行錯誤或執行結果不正確的情況。
 
93、 StatementPreparedStatement的區別
  StatementPreparedStatement的父接口,使用拼接字符串的方式填充SQL語句中的值,所以,當值不同的時候,JDBC會重新編譯SQL語句,效率低,而且容易造成SQL注入。
PreparedStatement提供了佔位符方式設置SQL語句,JDBC不會重新編譯SQL語句,而且無論是什麼值都當做字符串處理,不會造成SQL注入。
 
94、什麼是三層架構
三層架構即:表現層、業務層、持久層。每一層完成即定的功能,層與層之間用接口做耦合。每一層的組件可以單獨測試,當其中一個組件更換或修改後,不會影響別的層的組件。
持久層:用於完成數據庫相關的操作。採用DAO模式,創建實體類和數據庫表做映射,也就是哪個類對應哪個表,哪個屬性對應哪個列。而持久層的目的就是完成對象數據和關係數據的轉換。
業務層:用於業務處理。採用事務腳本模式。將一次請求中所有的業務封裝成一個方法,保證方法中所有的數據庫更新操作同時成功,同時失敗。不允許部分成功,部分失敗,這樣引起數據混亂的情況發生。
表現層:採用MVC模式。M表示模型,就是實體類,用於數據的封裝和數據的傳輸。V表示視圖,用於展示數據和接收數據。C表示控制,用於調用業務組件,完成業務流程的控制。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章