java 基本理論知識點


http://www.cnblogs.com/hellokitty1/p/4491808.html

1、main方法是怎么寫的

       public static void main(String [] args){}//最習慣的

     public static void main(String  args[]){}

     static public void main (String [] args){}   

2、變量的命名規則是怎么樣的?   

       類名的定義:必須以大寫開始,采用駝峰命名 

       方法名、屬性名的定義:以小寫開始,采用駝峰命

       常量:全部大寫

3、if…else…和寫兩個if 有什么區別

       兩個if為兩次選擇判斷.兩條語句,都會執行

       if...else為一次判斷,if為選擇條件1,else為除去選擇條件1之外的其他情況.,一條語句只會執行一次

4、在JAVA中直接寫浮點常數,默認是什么類型?

       默認類型為double型

5、什么是標識符?它的命名規則是什么?

       標識符是可以命名的地方。標識分為用戶標識符和系統標識符(關鍵字)

       命名可以只用數字,字母,下划線(_),美元符號($)作為變量名,且首字母不能為數字.

6、什么是變量?

       命了名的內存空間,並且空間的值可以變化

7、JDK與JRE分別是什么?

       JDK為Java開發工具包,包括編譯環境,運行環境,調試環境和基礎類庫,JDK包含JRE

       JRE為Java運行環境,包括虛擬機,核心類庫和鏈接文件

8、try-catch-finally三個基本塊的作用?catch里的代碼是干什么的?

       try塊進行異常捕獲

       catch塊對捕獲的異常分別處理

       finally塊在try_catch塊執行完畢后再執行,進行清理和系統回收

       catch塊的代碼是進行異常捕獲,顯示異常信息和處理意見的

9、繼承類和實現接口分別怎么做?

       使用extends關鍵字繼承類

       使用implements關鍵字實現接口

10、如何去獲得字符串的長度?

       調用字符串的length()方法獲得字符串長度

     字符串有length()方法,數組有length屬性。

11、Java的基本數據類型有哪些?

       byte, short, int, long, float, double, char, boolean

    java的引用類型:類 接口 數組

12、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,並可返回變化后的結果,是值傳遞還是引用傳遞

       值傳遞

13、列出至少5個最常見到的runtime exception並描述在什么情況下出現

       ClassNotFoundException 類無法找到

       IOException 輸入輸出異常

       FileNotFoundException 文件無法找到

       NonePointException 空指針異常

       SQLException 數據庫鏈接異常

14、ArrayList和Vector的區別

       ArrayList和Vector都是集合框架中的類,都實現了List接口,結構相似

       ArrayList為JDK1.2效率高,線程不安全

       Vector為JDK1.0效率低,線程安全

15、在IO中字節流和字符流的父類是什么?

       字節流:InputStream/OutputStream

       字符流:Reader/Writer

16、什么是包?定義包有什么好處?

       包就是文件夾。

       包定義了類的路徑,用於區分相同名字的類和對不同類的歸類,對類進行組織

       包可以用做信息的隱藏

17、怎么樣知道磁盤一個目錄中有哪些文件?

       在當前目錄創建File對象,調用list()方法獲得所有文件和路徑名

18、如何獲得一定范圍的隨機整數?

       使用random(隨機數上限),調用其nextInt()方法獲得整數隨機數

19、如何獲得java當前的工作目錄

       System.getProperty("user.dir")方法獲得當前目錄

20、怎么樣判斷一個異常類是checked異常還是unchecked異常?

       是否是RuntimeException子類

21、靜態變量和成員變量應該怎么訪問?

       靜態變量使用類名. 直接訪問。對象.靜態變量

       成員變量需要先創建實例,使用對象名.屬性

22、如何將一個字符串轉成一個基本數據類型

       調用Integer.parseInt(字符串)方法轉換

23、如何讓JFrame的初始位置居中(在不同的分辨率中)

       調用JFrame的setLocationRelativeTo()方法,參數為null

24、談談集合的作用

       存儲,檢索,操作,傳輸

25、類的修飾符能不能是private、static、protected?

       可以使用。但這種類只能是內部類

       private為私有類,不能被外部訪問

       protected為受保護類,只能同包類和非同包子類訪問

       static為靜態類,該類不需創建對象

26、Try塊中是否所有的語句都一定會執行,為什么?

       try塊中的所有語句不一定會執行,當執行中遇到異常后,會中止try中其它語句的執行。即跳轉到catch塊中捕獲異常

27、什么時候用繼承,什么時候用接口?

       繼承是屬性和方法的重用。接口只重用方法。

28、finally是不是什么時候都會執行?

 

       try{

int i=9/3;

System.exit(0);

}

catch(){

 

}

finally{

 

}

29、什么是主線程?

       程序運行一開始的線程,通常為main方法所在的線程,主線程產生子線程並在所有線程結束后執行清理

30、進行IO流操作時,如果操作的文件不存在會發生什么情況?

       讀取流發生fileNotFound異常

       寫入流會創建新文件

31、IO流操作的步驟是怎么樣的?

       創建流,操作流,關閉流

       創建目錄對象,在目錄對象上建立IO流,傳輸數據后IO流關閉

32、finally的作用是什么?

       在異常捕獲try_catch結束后執行相關清理.

34、當一個線程進入一個對象的一個同步方法后,能否進入其它非同步方法? 么?一般在什么時候使用?

       可以。

 33、try {}里有一個return語句,那么緊跟在這個try后的finally {}里的代碼會不會被執行,什么時候被執行?

       會執行,在return之前執行

35、如何啟動線程,它直接調用run()方法有什么區別?

       調用start()方法產生子線程,直接調用run方法不產生子線程,而是常規的對象方法調用.

36、數組有沒有length()這個方法? String有沒有length()這個方法?

       數組是length屬性,String有length()方法

37、GC是什么? 為什么要有GC?

       垃圾回收,提醒垃圾回收器執行垃圾回收工作

38、線程同步化會帶什么樣的結果?

       保證被操作的數據源安全,但降低了程序的效率

39、什么是線程安全?

       線程安全即是線程同步,在同時訪問數據時通過同步保證數據的正確性

40、服務器類有一個while循環,能否直接while(true)?

       不能,服務器不能關閉.只能直接結束主線程.

41、java幫助文檔是如何生成的?

       通過在程序中添加文檔注釋,在eclipse中使用"導出"功能生成幫助文檔

42、什么時候類名和文件名必須一致?

       當類的訪問修飾符為public

43、如何將實現包裝類和基本數據類型轉化?

       使用構造方法由基本數據類型轉化包裝類,調用包裝類的方法轉化成基本類型

44、類InputStream中方法read()的返回值是什么?讀出的是什么?

       返回值為整型,讀取的單個字符的byte值

45、如果一個類實現一個接口,可不可以不實現接口里定義的所有方法?

       可以 。但這個類只能是抽象類

46、構造方法和方法有什么區別?構造方法能不能被重載,能不能被重寫?

       構造方法是產生對象時使用的方法,只能被重載,不能被重寫

47、請列舉switch( )括號中能接受的所有數據類型。

       byte short int char

     在JDK7.0的版本中還可以是String

48、GUI的布局管理器常見的有哪幾種?

       絕對布局,卡片布局,BorderLayout ,GridLayout,FlowLayout

49、斷點有什么作用?

       調適模式時當運行到斷點則程序停止.查看到當時變量和對象

50、String和StringBuffer的區別?

       String保存在靜態區,長度不可改變,StringBuffer保存在堆中,長度可以改變

51、接口里方法修符是什么?

       public 或 不寫,均代表公共的

52、接口里可以定義變量嗎?    

       不能.只能定義靜態常量

53、說幾個String常用的方法

       length(),substring(),indexOf(), trim()

54、在Dos界面下如何編譯並執行Java程序?

       使用javac+文件名命令進行編譯,然后執行java+類名命令運行

55、創建一個線程有幾種方法?

       繼承Thread類或實現runnable接口

56、項目開發的流程是怎么樣的?

       需求分析,概要設計,具體設計,編碼,程序測試,,部署

57、java語言的特點是什么?

       面向對象,跨平台性 ,安全性,垃圾回收

58、main方法中有個參數String[] args。這個參數的值是由誰傳遞給它的。

       java Test aaa

59、java中采用什么字符編碼集?char類型能不能放入一個中文字?

       UNICODE 一個字符兩個字節  可以

60、byte的取值范圍

       -128——127

61、throw和throws的區別

       throw在程序中申明拋出異常,是一條語句

       throws方法修飾符。在方法聲明上聲明將要拋出的異常

62、子類繼承父類時,在子類構造方法的第一行語句應該怎么寫?

       super()

63、注釋分為幾種?你是如何使用的。

       文檔注釋,單行注釋,多行注釋,在方法名和屬性使用文檔注釋,在語句中使用單行注釋或多行注釋

64、一個子類能同時繼承於多個父類嗎?

       不能

65、局部變量使用時候需要注意什么問題?

       局部變量的作用域,初始化,修飾符只能是final或不寫

66、引用數據類型作為參數傳遞時,傳遞的是什么?

       傳遞的是保存的內存地址

67、基本數據類型和引用數據類型的區別是什么?

       基本數據類型中保存的是實際的值,引用數據類型保存的是被引用的內存地址

68、什么樣的類不能被實例化?Math這個類能不能實例化?

       抽像類,不能,因為Math構造方法私有

69、是否可以繼承String類?

       不能,String是終態類

70、談談算術表達式的優先級

       .();

       一元運算符++  --- (類型)

       算術運算符+-*/

       比較運算符><

       位運算符 ^|&

       邏輯運算符&& ||

       賦值

71、如何定義一個常量?定義常量的意義何在?

       final關鍵字,常量可以避免使用數字造成意思不明確,可以在代碼中做到只需修改一處即可改變常量

72、final這個修飾符的用法?

       final在修飾變量時為常量,在修飾方法時不能被重寫,在修飾類時不能被繼承

73、集合和數組的區別。

       集合中可以放不同類型的對象,集合中結構多樣,可以無序也可以有序.長度可以改變

       數組為有序且內存地址連續,只能保存同一種數據,長度不能改變

74、JVM是什么?它的作用是什么?它和java運行環境有什么區別?

       java虛擬機,類加載,字節碼校驗,解析器,交給OS執行

       JRE包括JVM,還包括核心類庫,jvm,鏈接文件

75、GUI響應一個事件的代碼如何寫?

       1、確定事件源

       2、確定監聽器,實現ActionListener

    3、注冊

76、實現接口使用什么關鍵字?在實現一個接口時必須要做什么?

       implements,必須實現接口的所有抽象方法

77、如果要拋出異常怎么做?

       throw 異常對象

78、如果try塊中有多種異常,在catch塊中如何處理?

       使用多個catch塊分別處理多個異常

79、為什么從集合中取出來的元素都是Object類型的?

       集合中可以保存多種類型的對象,所以當從集合中抽取出的對象虛擬機並不能識別是什么類型.所以向上轉型為Object類

81、HashMap等是實現的 Collection的接口嗎?

       不是.實現的map接口

82、Collection與Collections的區別?

       Collection是集合接口,Collections是集合的算法類

83、String是基本數據類型嗎?基本數據類型有哪些?

       不是.byte short int long float double char boolean

84、異常捕獲的流程?如果有異常發生是怎樣的流程?

       try塊中執行代碼,當觸發異常后轉換到catch塊.執行完catch塊后,無論是否有異常都會執行finally塊

85、輸入輸出流分幾種?分別在什么時候使用?

       字符流,字節流,對象流,字符流在字符文件傳出時,對象流在傳輸對象時使用

86、Error和Exception的區別是什么?

       Error是系統錯誤信息,可以捕獲,但無法處理

       Exception是異常,可以通過異常捕獲在程序中捕獲,也可以處理

87, 面向對象的特征

       繼承 封裝 多態

88、什么是構造方法?構造方法的作用?(目的、意義)

       構造方法是類產生對象的方法

       為對象分配空間,判斷類是否加載,否則加載類,初始化成員變量,返回對象地址

89、this、super的用法與區別?

       this為當前類,super為父類

90、子類中怎么調用父類的方法?

       使用super.方法

91、子類繼承父類,父類的構造方法能被繼承嗎?

       不會

92、講一下多態的概念。

       相同的行為,不同的表現

       允許用父類變量指向子類的實例,允許用接口變量指向實現類實例

     重寫是實現運行時多態性的手段

     重載是實現編譯時多態性的手段

     封裝、繼承和多態是面向對象編程的重要支柱

 93、對象的序列化怎么實現的?   

       被序列化的對象先實現Serializable接口,然后使用輸出流將對象轉化為二進制輸出

94、訪問修飾符有哪幾種?它們之間的區別是什么?

       public 公共的,所有的類都可以訪問(本類,同一包中的不同類,不同包,子類)

       protected 受保護的,同包的不同類,子類,本類

       dufault 默認的,同包的類可以訪問 本類

       private 私有的,其他類不可訪問

95、靜態變量與成員變量的區別。

       靜態變量在類加載時產生,所有對象使用的靜態變量均為同一的變量,放在數據段中

       成員變量需在產生對象后初始化產生,放在堆中

96、對對象進行比較怎么做?為什么不用“==”?

       equals方法,==是比較對象內存地址的值

     equals比較內容

97、什么時候用繼承Thread?什么時候實現Runnable接口?

       當只有一個類繼承時使用繼承Thread,當已經繼承了其他類,同時要實現多線程則使用Runnable接口

98、Map、list與set的區別?里面常用的類有哪些?

       Map是按照鍵值對的方式保存,主要有HashMap,HashTable,TreeMap

       List是按照順序存放,主要有ArrayList,LinkedList,Vector

       set是不按照順序存放,主要有HashSet,TreeSet

99、舉出常用的list類。哪種情況用哪種好?

       ArrayList:按照順序,在末尾插入或需要遍歷時使用

       LinkedList:鏈表結構,在中間或前端插入數據使用

100, 創建新對象的方式

      反射  克隆  構造方法 new 反序列化

101、什么時候用輸入流,什么時候用輸出流?

       對於內存輸入則使用輸入流,從內存輸出則使用輸出流

102、寫一個數組的創建。

       String [] str = new String [5]

103、重寫與重載的區別?參數一樣,返回類型不一樣 是重載嗎?

       重寫:父類和子類之間,訪問修飾符大於等於父類,返回類型相同,方法名和參數列表相同

       重載:在同一個類中,訪問修飾符可不相同,返回類型可不相同,方法名相同,參數列表不同

       不是

104、final與finally、finalize的區別?

       final修飾變量為常量,修飾方法不可重寫,修飾類為終態類

       finally在異常捕獲的最后執行清理工作

       finalize為系統清理垃圾的方法

105、int與Integer的區別?

       int為基本數據類型,Integer為包裝類

106、集合里的接口有哪些?請你創建一個List類的實例。

       Collection,List,Set,Map

       List list = new ArrayList()

107、變量按作用域分類分為幾種?

       局部變量,成員變量,靜態變量

108、Java的引用數據類型有哪些?

       對象  數組 接口

109、Java程序的執行過程是怎樣的?

       編寫源文件*.java  將源文件編譯成*.class(javac)

   類加載   字節碼校驗     解釋器    OS

110、啟動線程時可以調用run()方法嗎?

       不可以

111、解釋一下在項目里你怎么去實現多線程的。

       寫子線程類,產生子線程類對象,調用start()

112、面向對象的特征有哪些?

       繼承,封裝,多態

113、談談線程所擁有的幾種狀態

       新建,就緒,運行,結束,休眠,掛起,阻塞,等待

114、java安全性體現在什么地方?

       垃圾回收機制   異常處理

115、談集合遍歷的方式

       使用Iterator遍歷,使用for-each結構(JDK1.5) for 循環(List)

116、定義抽象方法的意義何在?

       當子類繼承父類后必須重寫抽象方法,對子類行為的規范和同一

117、你是怎么使用靜態變量和成員變量的?

       靜態變量:共享 統一,當類中對象都有屬性,但值不同,使用成員變量,

118、transient是什么意思?

       當序列化時不序列化,該屬性的值不做傳輸。該關鍵詞修飾的屬性

119、傳輸層協議TCP和UDP說法

       TCP協議是一種可靠的網絡通信協議。

       TCP協議可以進行擁塞控制和流量控制。

       UDP協議是一種不可靠的網絡通信協議。

120、什么是反射?

       在編譯時並不知道應該加載哪個類,類的加載是運行時進行的。反射具有對類本身信息進行探知和自審的功能。

120、用接口有什么好處?

       達到系統的分離,提高系統的靈活性,使用接口規定公共的行為

121、抽象方法能不能是private和static修飾符?

       不能.使用 abstract 

122、Java基礎技能中強調程序代碼的讀寫能力,如果一個類很長,你會怎樣讀寫?

       分離  分離方法  分離類

123、線程和進程的區別是什么?

       系統中程序的運行對應一個進程,每個進程都會消耗內存。一個進程包括多個線程

124、為什么實現一個接口必須要實現接口里面所有的方法?

       因為在使用接口調實現類方法時,必須要確保該方法已經有實現。

125、awt和swing的區別?

       awt調用的是OS中的樣式,均有的組件才能使用

       swing使用自身組件,不調用系統組件

126、Class 和class的區別

       Class是類模板類,class為關鍵字

127、在線程中wait與sleep的區別?

       wait在同步中使用,為Object類的方法自動釋放鎖,且需要其他程序調用notify喚醒

       sleep任何地方使用,為Thread類的方法,不會釋放鎖,休眠一定時間后自動喚醒

128、什么是封裝?封裝的好處是什么?

       封裝是將對象所具有的屬性和方法作為一個整體,封裝第一是信息的集合。第二信息的隱藏

130、什么是線程同步?

       當兩個以上的線程訪問同一個資源時,為了保護資源,避免數據混亂,   

對象在同一時間只能被一個線程訪問,等該線程釋放鎖后其他線程才能訪問

131、static和非static修飾的變量哪個生命周期長?

       static修飾的變量

132、java的環境變量如何配置?為什么要配置?

       將系統環境變量中田間JAVA_HOME的鍵,同時將其bin目錄的全路徑添加到path中

       配置環境是為了在任何目錄下都能使用JDK的編譯和運行環境

133、演示java項目如何打包成jar文件

       使用eclipse中導出功能.

134、private變量能不能被其他類訪問?如果能,怎么訪問?

       可以,使用反射或為該類提供set/get方法

135、java為什么能夠跨平台?

       java的代碼運行是在虛擬機中解釋運行的,不同的OS有針對於該OS編寫的虛擬機

136、System.out和System.in是什么意思?

       系統標准輸入和輸出。標准的含義是利用標准的外設,鍵盤、鼠標、顯示器,作為輸入輸出的設置

137、談談&&和&的區別

       &&邏輯與.為邏輯判斷符號 短路

       &位運算符號,相同的位保存為該相同數值,不同則為0

138、你的程序遇到錯時怎么解決的?

       查看錯誤描述和行數,分析錯誤原因.使用斷點調試

140、什么是泛型?它有什么樣的好處?

       對與集合指定其類型,規定了集合中只能存放的類型.在集合中取出的對象不需由Object類強轉

141、說一下iterator。

       迭代器,Iterator作為指針的工作原理,在集合中的元素之間進行跳動達到遍歷集合的作用

143、談談HashMap與Hashtable的區別。

       HashMap為JDK1.2,允許空鍵和空值,線程不安全,效率高

       Hashtable為JDK1.0,不允許空鍵和空值,線程安全,效率低

144、什么是對象序列化,為什么要使用?

       對象序列化是將對象以二進制方式傳輸對象,流都是字節方式傳輸,傳輸對象之前必須將對象打散成字節序列以利用傳輸。

145、異常框架的類結構?

       Throwable類下分為error類和exception類

146、多線程的優先級?為什么要分優先級?

1-10 數字越大優先級越高

       優先級可增大對系統資源的獲得概率

147、什么是異常?描述下異常處理?

       異常是描述錯誤信息的對象,通過try_catch捕獲異常處理異常

148、談談集合框架?

       集合框架包含:1、接口  2、實現類   3、算法(Collections   iterator)

 

149、談談你對面向對象的理解與認識?

       使用面向對象的方式開發可以做到組件式的開發,對於不同的對象使用封裝,對程序進行模塊化的設計

150、項目中印象最深的部分?

       需求分析

151、方法重載的好處?

       實現好的兼容性,同一方法可完成不同情況下的行為

152、談談繼承,為什么要使用繼承?

       繼承使子類擁有父類的屬性和方法,簡化代碼提高代碼的重用

153、接口與抽象類的區別?

       接口關鍵字interface,只能由靜態常量,抽象方法,無構造方法,可以多重實現

       抽象類關鍵字abstract,可以有實現方法和抽象方法,靜態常量和屬性,有構造方法,不能產生對象,只能單根繼承

154、值傳遞與引用傳遞的區別?

       值傳遞為實際保存的數值,引用傳遞傳遞的是保存在其中的內存地址

155、說說項目工作流程。

       需求分析-概要設計-詳細設計-代碼編寫-程序測試-程序上線

156、說說工廠模式

       工廠模式是指將需要創建對象所做的初始化工作封裝成類,外部直接調用該工廠類產生對象(接口對象),將類信息放在文件中,增加代碼靈活性。

157、什么是單例模式

       確保該類的對象只有一個,為的是減少內存消耗,提高效率

       類中提供靜態方法判斷是否產生類,並返回該類,構造方法為private

158、說說socket開發的流程

       創建serverSocket,開放端口,調用其accept方法等待客戶端聯接

159、關鍵字synchronized

       保證任何時候只有一個線程訪問一個方法或對象

160、socket和serverSocket的區別。

       socket為客戶端請求的數據對象,ServerSocket為服務器端接收數據對象

161、PreparedStatement和Statement的區別

       statement只能直接編譯寫好的sql語句,不同的sql語句需要重新編譯

       preparedStatement預便於sql,對值的部分使用問號代替,不同的值只需編譯一次

162、什么格式良好的XML,什么是有效的XML

       良好是結構符合標記成對出現,標記意思明確,有效是指滿足DTD約束

163、解析XML的方式主要有哪些?各自有什么優缺點

       DOM:將文檔全部讀取到內存,方便操作,消耗資源

       SAX:通過事件回調模式解析,按需求讀取,效率高,對XML結構不直觀

164 垃圾回收

    垃圾回收是一個后台線程

    程序員不能干預垃圾回收

    垃圾回收只能回收堆上的內存,無法釋放外部資源(如打開的文件)

    調用System類的gc方法不能確保垃圾回收器回收內存

166 如何實例化Class對象

     通過forName()方法...

     對象.getClass();

     類.class;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM