java考試寶典_第1頁
java考試寶典_第2頁
java考試寶典_第3頁
java考試寶典_第4頁
java考試寶典_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1. 在一個獨立的原始程序中,只能有一個public類,卻可以有許多non-public類。2.在一個Java程序中有且只能有一個main()方法由于Java程序是由類所組成,所以在完整的Java程序里,必須且至少有一個類。3.public static void main(String args) / main() method,主程序開始 public代表main()公有的method;static表示main()在沒有創建類對象的情況下,仍然可以被運行;void則表示main()方法沒有返回值。Main后的括號()中的參數String args表示運行該程序時所需要的參數4.·

2、單行注釋 / ·多行注釋 /* */ ·文檔注釋 /*用這種方法注釋的內容會被解釋成程序的正式文檔,并能包含進如javadoc之類的工具生成的文檔里,用以說明該程序的層次結構及其方法。*/ 5.標識符:可由任意順序的大小寫字母、數字、下劃線(_)和美元符號($)組成,但標識符不能以數字開頭,不能是Java中的保留關鍵字。6.變量的設置有以下三種方法:在聲明的時候設置、聲明后再設置、在程序中的任何位置聲明并設置。7基本數據類型 字節 long(長整數) 8 int(整數) 4 short(短整數) 2 byte(位) 1 char() 1 boolean() 1 float(

3、) 4 double() 8 當最大值加上1時,結果反而變成表示范圍中最小的值;當最大值加上2時,結果變成表示范圍中次小的值,這就是數據類型的溢出。8. 使用浮點型數值時,默認的類型是double,在數值后面可加上D或是d,作為double類型的標識。在Java中,D或d是可有可無的。在數據后面加上F或是f,則作為float類型的識別。若是沒有加上,Java就會將該數據視為double類型,而在編譯時就會發生錯誤,錯誤提示會告訴設計者可能會失去精確度。9.自動類型轉換【擴大轉換】條件:放大精度1)轉換前的數據類型與轉換后的類型兼容。 【當兩個數中有一個為浮點數時,其運算的結果會直接轉換為浮點數

4、。當表達式中變量的類型不同時,Java會自動以較小的表示范圍轉換成較大的表示范圍后,再作運算。也就是說,假設有一個整數和雙精度浮點數作運算時,Java會把整數轉換成雙精度浮點數后再作運算,運算結果也會變成雙精度浮點數。】2)轉換后的數據類型的表示范圍比轉換前的類型大。強制類型轉換【縮小轉換】:失去精度10.一元運算符: a a的補碼-a a取反11. a+會先執行整個語句后再將a的值加1;+b則先把b的值加1后,再執行整個語句。12.運算符的優先級a /= b- / 相當于計算 a = a / b 之后,再計算b- 13.表達式的類型轉換當Java發現程序的表達式中有類型不相符的情況時,會依據

5、下列的規則來處理類型的轉換。1)占用字節較少的類型轉換成占用字節較多的類型。 2)字符類型會轉換成int類型。 3)int類型會轉換成float類型。 4)表達式中若某個操作數的類型為double,則另一個操作數字也會轉換成double類型。5)布爾類型不能轉換成其它類型。 14. 一般來說程序的結構包含有下面三種: 1)順序結構 2)選擇結構 :switch (表達式) /switch語句里的選擇值只能是字符或是常量case 選擇值1:語句主體 1 ; break ; /break是跳出語句case 選擇值2 : 語句主體 2 ; break ; . case 選擇值n : 語句主體 n ;

6、 break ; default: 語句主體;/若是沒有定義default該執行的語句,則什么也不會執行,直接離開switch語句。 3)循環結構 15. break語句可以強迫程序跳離循環,當程序執行到break語句時,即會離開循環, 繼續執行循環外的下一個語句,如果break語句出現在嵌套循環中的內層循環,則break 語句只會跳離當前層的循環。以下圖的for循環為例,在循環主體中有break語句時,當程序執行到break,即會離開循環主體,而繼續執行循環外層的語句。continue語句可以強迫程序跳到循環的起始處,當程序運行到continue語句時,即會停止運行剩余的循環主體,而是回到循

7、環的開始處繼續運行。以下圖的for循環為例,在循環主體中有continue語句,當程序執行到continue,即會回到循環的起點,繼續執行循環主體的部分語句。當判斷條件成立時,break語句與continue語句會有不同的執行方式。Break語句不管情況如何,先離開循環再說;而continue語句則不再執行此次循環的剩余語句,直接回到循環的起始處。16. 在循環里也可以聲明變量,但所聲明的變量只是局部變量,只要跳出循環,這個變量便不能再使用。17.一維數組 兩個步驟:(1)聲明數組;(2)分配內存給該數組。例:int score;/聲明score =new int3;/分配空間System.o

8、ut.println("n數組長度是: "+score.length); /輸出數組長度二維數組int score = new int43 ; / 聲明整型數組score,同時為其開辟一塊內存空間在二維數組中,若是想取得整個數組的行數,或者是某行元素的個數時,可利用“.length”來獲取num.length; / 計算數組num的行數,其值為3num0.length / 計算數組num的第1行元素的個數,其值為4Java允許二維數組中每行的元素個數均不相同。18. 面向對象的程序設計有三個主要特征,如下: 1.封裝性 2.繼承性 3.多態性1) 封裝性:a. 把對象的屬性

9、和行為看成一個密不可分的整體,將這兩者封裝在一個不可分割的獨立單位(即對象)中。b.把不需要讓外界知道的信息隱藏起來,有些對象的屬性及行為允許外界用戶知道或使用,但不允許更改,而另一些屬性或行為,則不允許外界知曉;或只允許使用對象的功能,而盡可能隱蔽對象的功能實現細節。 2)繼承性 3)多態性允許程序中出現重名現象 a. 方法重載:在一個類中,允許多個方法使用同一個名字,但方法的參數不同,完成的功能也不同。 b. 成員覆蓋:子類與父類允許具有相同的變量名稱,但數據類型不同,允許具有相同的方法名稱,但完成的功能不同。19. 聲明類Person時,類名中單詞的首字母最好是大寫的。 創建類: Per

10、son p; P=new person();或者Person p=new Person();/對象只有在實例化之后才能被使用,而實例化對象的關鍵字就是new。20. 訪問屬性:對象名稱.屬性名 訪問方法:對象名稱.方法名()例:Person p;=“張三”;page=25;ptalk();21. 【封裝類中的屬性或方法】“封裝”(encapsulation):是把屬性和方法包裝在一個類內以限定成員的訪問,以起到保護數據的作用。 封裝屬性:private 屬性類型 屬性名 私有成員(private member)可限定類中的屬性,被限制成私有的屬性僅能供同一類內的方法所訪問。封裝方法

11、:private 方法返回類型 方法名稱(參數)在類的外部不能用對象去調用private聲明的屬性或方法。類的外部可訪問到類內部的公有成員(public member)。在類內部調用:在一個java程序中是可以通過對象去調用類中的方法的,當然類的內部也能互相調用各自的方法垃圾對象:就是指程序中不再使用的對象引用匿名對象:只使用一次的對象,即沒有任何一個具體的對象名稱引用它例:new Person("張三",25) ;22.構造方法:構造方法可視為一種特殊的方法,它的主要作用是為所創建的對象賦初值。1)它具有與類名相同的名稱 【構造方法的名稱必須與其所屬的類的類名稱相同,且不

12、能有返回值。】2)它沒有返回值構造方法則是在創建對象時,便自動調用,并執行構造方法的內容。因此,構造方法無需在程序中直接調用,而是在對象產生時自動執行。如果在程序中沒有明確聲明一構造方法的話,系統會自動為類加入一個無參的且什么都不做的構造方法。類似于下面代碼: public Person() 所以,之前所使用的程序雖然沒有明確的聲明構造方法,也是可以正常運行的。23.構造方法的重載:只要構造方法的參數個數不同,或是類型不同,便可定義多個名稱相同的構造方法。在java程序中只要明確的聲明了構造方法,則默認的構造方法將不會被自動生成。24.對象的比較:“= =”運算符與equals()方法a. 用

13、的“=”比較,比較的是內存地址值b. “equals”是比較內容的 String str1 = new String("java") ; String str2 = new String("java") ; (str1.equals(str2) => str1 equals str225.兩種String對象的聲明方式的不同在哪? String str1 = new String("java"); String str2 = "java"String對象的內容一旦聲明則不能輕易改變。如果想改變一個String

14、對象的值,則第一步要做的是先將原有的String引用斷開,之后再開辟新的內存空間,而且如果用new關鍵字開辟String對象的內存空間的話,則實際上就開辟了兩個內存空間26.this關鍵字1)this表示當前對象: = name ;2)如果在程序中想用某一構造方法調用另一構造方法,可以用this來實現,具體的調用形式如下: this() 構造方法是在實例化一對象時被自動調用的,也就是說在類中的所有方法里,只有構造方法是被優先調用的,所以使用this調用構造方法必須也只能放在構造方法的第一行.27.static 關鍵字靜態變量:聲明的屬性是所有對象共享的。靜態方法:既可以在聲明

15、變量時使用,也可以用其來聲明方法,用它聲明的方法有時也被稱為“類方法”。 如果在類中聲明了一static類型的屬性,則此屬性既可以在非static類型的方法中使用,也可以在static類型的方法中使用。但用static類型的屬性調用非static類型的屬性時,則會出現錯誤。28.構造方法的私有:構造方法雖然被私有了,但并不一定是說此類不能產生實例化對象,只是產生這個實例化對象的位置有所變化,即只能在本類中產生實例化對象。29.對象數組的使用例:創建三個Person 類類型的數組元素法一:Person p=new Person3;P0=new Person();P1=new Person();P

16、2=new Person();法二:【動態初始化】for(i=0;i<p.length;i+) Pi=new Person();法三:【靜態初始化】Person p=new Person() , new Person() , new Person() /采用靜態方式初始化對象數組利用父類的變量數組來訪問子類的內容的較好的做法是:(1) 先創建父類的變量數組; (2) 利用數組元素創建子類的對象,并以它來訪問子類的內容。30.內部類:在類內部也可以定義另一個類 內部類可聲明成public或private。當內部類聲明成public或private時,對其訪問的限制與成員變量和成員方法完全相

17、同。內部類Inner可以直接調用外部類Outer中的score屬性外部類是無法找到內部類中所聲明的屬性,而內部類則可以訪問外部類的屬性。用static可以聲明屬性或方法,而用static也可以聲明內部類,用static聲明的內部類則變成外部類,但是用static聲明的內部類不能訪問非static的外部類屬性。31.在類外部引用內部類:內部類也可以通過創建對象從外部類之外被調用,只要將內部類聲明為public即可。在方法中定義內部類:內部類不僅可以在類中定義,也可以在方法中定義內部類。final定義的局部變量:相當于是一個常量,它的生命周期超出方法運行的生命周期31.繼承在java中只允許單繼承

18、,而不允許多重繼承,也就是說一個子類只能有一個父類,但是java中卻允許多層繼承。錯誤正確子類對象在實例化時會默認先去調用父類中的無參構造方法,之后再調用本類中的相應構造方法。 如果程序中指定了構造方法,則默認構造方法不會再生成。只要在父類中增加一個什么都不做的構造方法,這一問題就可以解決了32. super:主要的功能是完成子類調用父類中的內容,也就是調用父類中的屬性或方法。super.父類中的屬性; super.父類中的方法() ;用super調用父類中的構造方法,只能放在程序的第一行,并且this()與super()只可使用其中一條。33.private:只要父類中的屬性被“privat

19、e”聲明的話,那么子類就再也無法訪問到它了。實際上并不是這樣的,在父類中加入了private關鍵字修飾,其目的只是相當于對子類隱藏了此屬性,子類無法去顯式的調用這些屬性,但是卻可以隱式地去調用。【子類在繼承父類時,會繼承父類中的全部的屬性與方法。】34.復寫:它是在子類當中,定義名稱、參數個數與類型均與父類相同的方法,用以復寫父類里的方法; 重載:它是指在相同類內,定義名稱相同,但參數個數或類型不同的方法,因此Java便可依據參數的個數或類型調用相應的方法。注意:子類復寫父類中的方法時,被子類復寫的方法不能擁有比父類中更嚴格的訪問權限。public權限要高于default權限。原有的類稱為基類

20、或父類,而新的類則稱為派生類或子類35.this與super比較36.抽象類· 抽象類和抽象方法都必須用abstract關鍵字來修飾。 · 抽象類不能被實例化,也就是不能用new關鍵字去產生對象。· 抽象方法只需聲明,而不需實現。· 含有抽象方法的類必須被聲明為抽象類,抽象類的子類必須復寫所有的抽象方法后才能被實例化,否則這個子類還是個抽象類。在抽象類定義的語法中,方法的定義可分為兩種:一種是一般的方法;另一種是“抽象方法”,它是以abstract關鍵字為開頭的方法,此方法只聲明了返回值的數據類型、方法名稱與所需的參數,但沒有定義方法體。在抽象類中,也可

21、以擁有構造方法,但是這些構造方法必須在子類中被調用。37.Object類: 它是所有類的父類,如果一個類沒有使用extends關鍵字明確標識繼承另外一個類,那么這個類就默認繼承Object類。Object類是Java類層中的最高層類,是所有類的超類。換句話說,Java中任何一個類都是它的子類。由于所有的類都是由Object類衍生出來的,所以Oject類中的方法適用于所有類。38.final關鍵字:1) final標記的類不能被繼承。【最終類沒有子類】2) final標記的方法不能被子類復寫。3) final標記的變量(成員變量或局部變量)即為常量,只能賦值一次。39.接口1)接口里的數據成員必

22、須初始化,且數據成員均為常量。 2)接口里的方法必須全部聲明為abstract,也就是說,接口不能像抽象類一樣保有一般的方法,而必須全部是“抽象方法”。接口與一般類一樣,本身也具有數據成員與方法,但數據成員一定要賦初值,且此值將不能再更改,方法也必須是“抽象方法”。也正因為方法必須是抽象方法,而沒有一般的方法,抽象方法聲明的關鍵字abstract是可以省略的。相同的情況也發生在數據成員身上,因數據成員必須賦初值,且此值不能再被更改,所以聲明數據成員的關鍵字final也可省略。利用接口打造新的類的過程,稱之為接口的實現(implementation)。一個接口可以同時繼承多個接口,也就是同時繼承

23、了多個接口的抽象方法與常量。40.對象的多態性Java對象的多態性分為:向上轉型(自動)、向下轉型(強制)。41. 復寫Object類中的equals() method可用來比較兩個類的對象是否相等。42. 通過instanceof關鍵字,可以判斷對象屬于那個類。43.異常處理常見異常:1、算術異常(ArithmeticException)。2、沒有給對象開辟內存空間時會出現空指針異常(NullPointerException)。3、找不到文件異常(FileNotFoundException)。4、數組下標超出異常(ArrayIndexOutOfBoundsException)所有的異常都是以

24、類的類型存在,除了內置的異常類之外,Java也可以自定義的異常類。如果沒有編寫相應的處理異常的程序代碼,則Java的默認異常處理機制會先拋出異常、然后停止程序運行。異常的處理: 1) try程序塊若是有異常發生時,程序的運行便中斷,并拋出“異常類所產生的對象”。2)拋出的對象如果屬于catch()括號內欲捕獲的異常類,則catch會捕捉此異常,然后進到catch的塊里繼續運行。3)無論try程序塊是否有捕捉到異常,或者捕捉到的異常是否與catch()括號里的異常相同,最后一定會運行finally塊里的程序代碼。finally的程序代碼塊運行結束后,程序再回到try-catch-finally塊

25、之后繼續執行。finally塊是可以省略的。如果省略了finally塊不寫,則在catch()塊運行結束后,程序跳到try-cath塊之后繼續執行。通過異常的機制,即使程序運行時發生問題,只要能捕捉到異常,程序便能順利地運行到最后,且還能適時的加入對錯誤信息的提示。Error類專門用來處理嚴重影響程序運行的錯誤,可是通常程序設計者不會設計程序代碼去捕捉這種錯誤,其原因在于即使捕捉到它,也無法給予適當的處理,如JAVA虛擬機出錯就屬于一種Error。不同于Error類,Exception類包含了一般性的異常,這些異常通常在捕捉到之后便可做妥善的處理,以確保程序繼續運行。RunntimeExcep

26、tion即使不編寫異常處理的程序代碼,依然可以編譯成功,而這種異常必須是在程序運行時才有可能發生,例如:數組的索引值超出了范圍。IOException 一定要編寫異常處理的程序代碼才行,它通常用來處理與輸入/輸出相關的操作,如文件的訪問、網絡的連接等。如何拋出異常?1)程序中拋出異常 throw 異常類實例對象;2)指定方法拋出異常方法名稱(參數) throws 異常類1,異常類2,在調用用throws拋出異常的方法時,可以將此異常在方法中再向上傳遞,而main()方法是整個程序的起點,所以如果在main()方法處如果再用throws拋出異常,則此異常就將交由JVM進行處理了。自定義異常:cl

27、ass 異常名稱 extends Exception 44.包及訪問權限package package名稱 ;import語句import package名稱.類名稱;通過import命令,可將某個package內的整個類導入,因此后續的程序代碼便不用再寫上被訪問package的名稱了。45.JDK中常見的包1、 java.lang 包含一些Java語言的核心類,如String、Math、Integer、System和Thread,提供常用功能。在java.lang包中還有一個子包:java.lang.reflect用于實現java類的反射機制。2、 java.awt 包含了構成抽象窗口工具集

28、(abstract window toolkits)的多個類,這些類被用來構建和管理應用程序的圖形用戶界面(GUI)。3、 javax.swing 此包用于建立圖形用戶界面,此包中的組件相對于java.awt包而言是輕量級組件。4、 java.applet 包含applet運行所需的一些類。5、 包含執行與網絡相關的操作的類。 6、 java.io 包含能提供多種輸入/輸出功能的類。7、 java.util 包含一些實用工具類,如定義系統特性、與日期日歷相關的函數。46.類成員的訪問控制權限1)private訪問控制符在前面已經介紹了private訪問控制符的作用,如果一個成員方法或成員變量名

29、前使用了private訪問控制符,那么這個成員只能在這個類的內部使用。注意:不能在方法體內聲明的變量前加private修飾符。2 )默認訪問控制符 如果一個成員方法或成員變量名前沒有使用任何訪問控制符,就稱這個成員所擁有的是默認的(default)訪問控制符。默認的訪問控制成員可以被這個包中的其它類訪問。如果一個子類與其父類位于不同的包中,子類也不能訪問父類中的默認訪問控制成員。3 ) protected訪問控制符 如果一個成員方法或成員變量名前使用了protected訪問控制符,那么這個成員既可以被同一個包中的其它類訪問,也可以被不同包中的子類訪問。4 ) public訪問控制符 如果一個成

30、員方法或成員變量名前使用了public訪問控制符,那么這個成員可以被所有的類訪問,不管訪問類與被訪問類是否在同一個包中。使用jar命令可以將一個包打成一個jar文件,供用戶使用。44.Java多線程它可以讓不同的程序塊一起運行,可讓程序運行更為順暢,同時也可達到多任務處理的目的。1)進程是程序的一次動態執行過程,它經歷了從代碼加載、執行到執行完畢的一個完整過程,這個過程也是進程本身從產生、發展到最終消亡的過程。2)線程是比進程更小的執行單位,線程是進程內部單一的一個順序控制流。所謂多線程是指一個進程在執行過程中可以產生多個線程,這些線程可以同時存在、同時運行,形成多條執行線索。一個進程可能包含

31、了多個同時執行的線程。線程和進程的主要差別體現在以下兩個方面: (1)同樣作為基本的執行單元,線程是劃分得比進程更小的執行單位。(2)每個進程都有一段專用的內存區域。與此相反,線程卻共享內存單元(包括代碼和數據),通過共享的內存單元來實現數據交換、實時通信與必要的同步操作。實現多線程的兩種方法:(1) 通過繼承Thread類實現多線程class 類名稱 extends Thread / 從Thread類擴展出子類 屬性 方法 修飾符 run() / 復寫Thread類里的run()方法以線程處理的程序; (2) 通過實現Runnable接口實現多線程在Java中如果一個類繼承了某一個類,同時又

32、想采用多線程技術的時,就不能用Thread類產生線程,因為Java不允許多繼承,這時就要用Runnable接口來創建線程了。class 類名稱 implements Runnable / 實現Runnable接口 屬性 方法 修飾符 run() / 復寫Thread類里的run()方法以線程處理的程序; 在Runnable接口中并沒有start()方法,所以一個類實現了Runnable接口也必須用Thread類中的start()方法來啟動多線程。實現Runnable接口相對于繼承Thread類來說,有如下顯著的優勢:(1)適合多個相同程序代碼的線程去處理同一資源的情況,把虛擬CPU(線程)同程

33、序的代碼、數據有效分離,較好地體現了面向對象的設計思想。(2)可以避免由于Java的單繼承特性帶來的局限。開發中經常碰到這樣一種情況,即:當要將已經繼承了某一個類的子類放入多線程中,由于一個類不能同時有兩個父類,所以不能用繼承Thread類的方式,那么就只能采用實現Runnable接口的方式了。(3)增強了程序的健壯性,代碼能夠被多個線程共享,代碼與數據是獨立的。當多個線程的執行代碼來自同一個類的實例時,即稱它們共享相同的代碼。多個線程可以操作相同的數據,與它們的代碼無關。當共享訪問相同的對象時,即共享相同的數據。當線程被構造時,需要的代碼和數據通過一個對象作為構造函數實參傳遞進去,這個對象就

34、是一個實現了Runnable接口的類的實例。任何線程一般具有五種狀態,即創建、就緒、運行、阻塞、終止。(1)新建Thread thread=new Thread(2)就緒新建線程對象后,調用該線程的start()方法就可以啟動線程。當線程啟動時,線程進入就緒狀態。此時,線程將進入線程隊列排隊,等待CPU服務,這表明它已經具備了運行條件。(3)運行當就緒狀態的線程被調用并獲得處理器資源時,線程就進入了運行狀態。此時,自動調用該線程對象的run()方法。run()方法定義了該線程的操作和功能。(4)堵塞一個正在執行的線程在某些特殊情況下,如被人為掛起或需要執行耗時的輸入輸出操作時,將讓出CPU并暫時中止自己的執行,進入堵塞狀態。在可執行狀態下,如果調用sleep()、suspend()、wait()等方法,線程都將進入堵塞狀態。堵塞時,線程不能進入排隊隊列,只有當引起堵塞的原因被消除后,線程才可以轉入就緒狀態。(5)死亡線程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論