1. 程式人生 > >NCAE(全國工業和資訊化應用人才考試 )-- 服務外包 JAVA 軟體開發複習整理(一)

NCAE(全國工業和資訊化應用人才考試 )-- 服務外包 JAVA 軟體開發複習整理(一)

  • public關鍵字在檔案中只能定義一個非內部類,否則編譯器將會出錯;
  • public 、 protected 、friendly(預設) 、private修飾符的訪問許可權:許可權大小:public>protected>friendly>private在這裡插入圖片描述
  • protected修飾屬性、方法和建構函式;可見範圍有同一個包內和與基類不在同一個包內的子類(只能訪問自身從基類繼承而來的受保護的成員,而不能訪問基類例項本身的受保護成員);
  • 保護成員對除了子類外的所有類實際上都是包級訪問或預設訪問。對於包外子類,只能通過繼承訪問。
  • 通過引數的順序和型別來區分過載與重寫,返回型別對區分方法沒有幫助。
方法過載:
	同一個類中允許同時存在兩個以上同名的方法
	過載規則:方法名相同
					方法引數不同(引數個數不同、引數型別、引數順序不同)
					與返回值型別無關(可相同,也可不相同)
方法重寫:
		子類繼承父類時才會發生
		重寫規則:
						方法名相同
						方法引數相同(引數個數,引數型別、引數順序都得相同)
						返回值型別相同
						子類中方法的訪問許可權要不小於父類中方法的訪問許可權(即子類修飾符不能低於父類的修飾符)
  • static方法不能被重寫
  • case語句中,default語句不是必須在結尾處出現的;
  • switch語句中,引數型別只能是byte、char、short或int型別的變數;
  • if表示式的返回型別只能是Boolean型別;
  • for中定義的變數只能在內部可用,在for迴圈外部來說永遠是不可見的;
  • 在子類中一個重寫的方法只可能只丟擲父類中宣告過的異常或者異常的子類,或者不丟擲異常。
  • 一個類的構造方法無論是什麼修飾符去修飾,它的main方法都可以例項化這個 方法;
  • System.gc()是用來呼叫垃圾收集器的,但是這並不能保證執行。
  • 當代碼已經無法再訪問物件的時候,這個物件就成為了可回收的垃圾。
  • 物件無法再被訪問的情況有兩種,分別為物件的引用設定為null指向指揮官物件的引用指向了其他物件
  • 定義在方法中的類只能看到來自巢狀方法中的final域,但是它可以看到巢狀類中包括私有域在內的域。
  • 建構函式的執行順序(由此不難看出java類初始化時建構函式的呼叫順序): 建構函式的執行順序(由此不難看出java類初始化時建構函式的呼叫順序):
		1.初始化物件:初始化的物件的儲存空間為空,或者值為0;
		2.按順序分別呼叫父類成員變數和例項成員變數的初始化表示式;
		3.呼叫父類建構函式:可以用super()方法指定具體的某個父類的建構函式;
		4.按順序分別呼叫類成員變數和例項成員變數的初始化表示式;
		5.呼叫類本身的建構函式
  • Java中的關鍵字:

1.與資料型別相關

關鍵字------型別------佔位元組數------備註;
boolean------布林資料型別------1------有true和false兩個值;
long------長整型資料型別------8;
int------整型資料型別------4------ -2^31~2^31-1;
short------短整型資料型別------2------ -2^15~2^15-1;
byte	------位元組資料型別------1------大小範圍為-2^7~2^7-1;
float	------浮點型(實數型)------4;
double------雙精度型資料型別------8; 
char------字元型資料型別------	2------(Unicode碼); 
class------表示一個類------不確定------可用於定義一個類;
interface------表示一個介面------不確定------可用於定義一個介面;

2.與流程控制

if------表示條件判斷;
else------條件轉折,與if連用;
do-while------表示迴圈語句,最少執行一次;

for------表示迴圈,for迴圈是最常使用的迴圈,格式for(表示式a; 表示式b; 表示式c)括號裡面的書通常用於控制迴圈的次數,一般會用一個int型別的變數類計數,如(int i=0; i<10; i++)表示式a用於流程控制的開始值,表示式b表示迴圈終止條件,表示式c用於計數。
switch(條件a)case……:switch和case合起來用於表示條件分支流程。如:
											while(int c) {
											case 1: {語句塊1} 
											case 2: {語句塊2}
											……?????? ……
											case n: {語句塊n}
											default:exit(0);
											}
如果c為1,則執行語句塊1;如果c為2,則執行語句塊2;以此類推,如果c為n,則執行語句塊n。default表示除case以外出現的情況。
default:在switch……case……分支語句可知,default是在所有case條件下都不成立時使用。用於包表示src資料夾下的當前包;如果用於類,表示只可被本檔案內的其它類訪問。
break:用於結束本層迴圈,或跳出某層迴圈。
continue:用於跳出本次迴圈,而break跳出本層迴圈。Break和continue可以實現類似於C\C++中goto語句的用法:
try{……}中放置可能會發生異常的的語句塊,catch(){……}用於抓住異常,{}定義當出現異常時的處理方法。finally{……}表示不管異常是否發生,都得進行finally{}中的處理。

java關鍵字眾多,在此就不一 一附上了

  • 類級別的變數總會被賦予一個預設值,而一個成員變數(包含在方法中)將不會被賦予任何預設值;
  • 任何基本型別的陣列元素的值總是在初始化的時候就會被初始化預設值,無論陣列是否被定義、無論陣列定義為類級別還是方法級別;
  • java中進位制的表示:
八進位制:以0開頭,eg:012表示10
十進位制:正常表示,eg:20
十六進位制:以0X開頭:eg:0X12表示18
  • 一個具有小數部分的資料的預設值型別是double而不是float;
  • char是java中唯一的未賦值的原始資料型別,他是16位長的;
  • 對於基本型別的包裝類可以直接賦值;
  • 只有+運算子可以對字串進行過載,不能對字串使用除號和減號,否則就會出錯;
  • 3>>>32的值是3,也就是說被移動了0位。
		移位運算子:
				>>: 左移運算子
				<<:右移運算子
				>>>:無符號右移,忽略符號位,空位都以0補齊
  • 引數傳遞:基本型別是值傳遞。引用型別是地址傳遞,可以改變其內容。
  • 運算優先順序:單運算元運算子>算數運算子>移位運算子>比較運算子>按位運算子>邏輯運算子>條件運算子>賦值運算子
  • 十進位制負數與二進位制的轉化:去掉符號(-)-----轉化為二進位制-----取反-----加1
  • 二進位制負數與十進位制的轉化:減1-----取反-----轉化為十進位制-----加上符號(-)
  • 帶符號移位運算:左移:相當於*2右移:相當於/2
  • 邏輯運算子:&&:第一運算元為假,則第二個操作沒有作用,所有結構都為假;||:如果第一個操作為真,則所有計算結果都為真;
  • 按位運算子可以對boolean進行操作;
  • 按位運算子優先順序:&>^>|
  • final常量在使用前必須初始化,否則會出現編譯錯誤;
  • static關鍵字不能修飾頂層類;
  • 方法中的區域性變數不能是用static來修飾;
  • transient關鍵字只能用於修飾變數,而不能修飾類和方法;注意:本地變數是不能被transient關鍵字修飾的
  • synchronized關鍵字不能修飾建構函式。
  • 單運算元運算子在進行算數時的基本資料型別轉換規則如下:
1).當運算子取正運算子(+)、取負運算子(-)、或按位取反運算子(~)時,如果運算元為位元組型(byte)、短整型(short)、或字元型(char)、則先被轉化為整型,再參與運算;
2).當運算子為自動遞增運算子(++)或自動遞減運算子(--)時,如果運算元為位元組型(byte)、短整型(short)、或字元型(char),則不用轉化為整型,而是直接參與算數運算,且運算結果型別也不變;
3).如果運算元為整型(int)或長整型(long),則無論運算子為何種但操作運算,均不發生型別轉換,直接參與運算,且結果型別不變(結果型別為大型別);
  • 雙運算元運算子在進行算數時的基本資料型別轉化規則如下:
1).如果運算元之一為雙精度型(double),則另一個運算元先被轉化為雙精度型(double),再參與算數運算;
2).如果兩個運算元均不為雙精度(double),當運算元之一為單精度型(float),則另一個數先轉化為單精度,再參與運算;
3).如果採用+=、*=等縮略形式的運算子,系統會自動強制將運算子結果轉化為目標變數的型別;
  • 陣列實現了Cloneable介面,繼承了Object類
  • 執行執行System.exit()方法或者出現error錯誤時,finally語句塊才不會獲得執行而退出程式(即:如果程式中沒有System.exit()方法和程式沒有error錯誤,則finally語句塊必須執行);
  • 在使用try……catch語句塊時,如果try中沒有響應異常產生,則catch中不能有這種異常。否則編譯錯誤。但exception、throwable可以出現。執行時異常也可以,如NullPointException
  • 在用實現Runnble介面的方法來建立執行緒時,必須要求建立一個Thread物件的例項,並且必須要在建立的時候,把實現該Runnble介面的物件作為構造方法的引數傳遞進去;
  • 關鍵字synchronized可以用在標記一段宣告或者鎖定一段程式碼,請注意的是這裡的鎖是基於物件而不是基於方法的;
  • wait和notify應該放在Synchronized關鍵字標記的程式碼中保證當前的程式碼在監視器的監控之中。
  • 執行緒排程不是獨立的,不能依靠虛擬機器讓他用同一種方式執行
  • ceil()方法返回的是比運算元大的最小的double值,如一下程式碼塊輸出值為2.0;
System.out.println(Math.ceil(1.1));
  • floor()方法返回的是比運算元小的最大的double值,如下圖程式碼塊輸出值為1.0;
System.out.println(Math.floor(1.1));
  • 不像一些隨機數系統,Java似乎並不支援提供種子數來增加隨機數;
  • round()方法返回一個最接近引數的整數,如果小數部分大於等於0.5,則入,否則則舍;
System.out.println(Math.round(1.49));
結果為1.0
  • 介面可以是預設的訪問修飾符
  • 抽象類的第一個具體子類必須實現超類的所有抽象方法;
  • 一個方法永遠不能同時標識為abstract和final,或者同時標識為abstract和private,也不能與static修飾符組合使用;
  • static不能修飾類;
  • 從java5起,只要新的返回型別是被重寫的(超類)方法所宣告的返回型別的子型別,就允許更改重寫方法中的返回型別;
  • 只能將靜態變數和方法作為呼叫super()或this()的一部分進行訪問,例如,super(Animal.Name)不能用非靜態屬性;
  • 一個類的構造方法是私有的時候,這個類的main方法是可以訪問的,再main方法中可以直接new一個類的例項;
  • 以下賦值是非法的:
int x = 25,36;
char e = -29;
char e = 70000;
  • 以下賦值是合法的
int x,y = 1
char e = (char)-29;
char e = (char)70000;
  • 以下宣告二維陣列是合法的:int[][] arr = new int [2][];
  • JVM只需知道賦予變數arr的大小;
  • 使用匿名陣列建立語法時,不能指定陣列的大小:new int[]{1,2}
  • 所有陣列均是物件;
  • int型別的陣列不能引用其他型別的陣列:以下程式碼是錯誤的:char[] arr = new int [2]
  • 例項初始化塊程式碼的執行時間恰好發生在呼叫建構函式中super()之後。換句話說,在所有超類的建構函式執行之後,如果有多個初始化塊,則執行順序是自頂向下。靜態程式碼塊只會在類初始化的時候執行一次。
  • 除了Character之外,所有的包裝類都是提供2個建構函式:一個是基本型別、一個是String表示的變元。
  • 為了節省記憶體,對於以下包裝器物件的兩個例項,當他們的基本值相同時,他們總是==關係:Boolean、Byte、從\u0000到\u007f的字元(7f是十進位制的127)、-128~127的Short和Integer
  • 對於方法的過載需要記住以下規則:
			加寬是優先於裝箱執行的
			加寬優先於var-arg(邊長引數)執行
			裝箱優先於var-arg(邊長引數)執行
			不能從一個包裝類加寬到另一個包裝類
			不能先加寬,後裝箱
			可以先裝箱,後加寬
			順序是:
			1.引數是基本型別:先匹配自身>加寬>包裝類
			2.引數是包裝型別:先匹配自身>拆箱基本型別>拆箱加寬基本型別
  • 在是final變數上不能使用遞增或遞減運算子
  • case常量必須是編譯時的常量,即如switch(a){ case b: }其中的b必須和a是同一種類型;
byte g = 127;
    	switch(g){
    	case 127:
    	}
    	程式碼編譯錯誤:因為128超出byte範圍;
  • 多個case標籤使用相同的值也是非法的;
  • switch中的default會像任何其他的case一樣直落執行。
  • 使用不帶catch子句和fianlly子句的try子句是非法的;
  • 任何catch子句都必須緊跟在try之後;
  • 任何finally必須跟在最後一個catch子句之後,沒有catch子句,則必須緊跟在try子句之後;
  • ExceptionErrorRuntimeExceptionThrowable型別的異常都夠使用throw關鍵字丟擲;