搞定~下一個任務!java
public class Test{json
static int cnt = 6; static{ cnt += 9; }
public static void main(String[] args){數組
System.out.println(「cnt =」 + cnt);
}
static{函數
cnt /=3; };
}
cnt的值是
正確答案: Acode
cnt=5對象
cnt=2繼承
cnt=3接口
cnt=6資源
初始化順序: 1.先父類,後子類 2.先屬性,後構造函數 3.先靜態,後非靜態 4.靜態初始化塊,靜態變量這兩個是屬於同一級別的,是按代碼寫得順序執行 5.同一類型(非數據類型,指以上),按代碼前後順序
看了前面的解答,我想更正一下其中幾位同窗的解答。 如樓上有的同窗說的,靜態初始化塊,靜態變量這兩個是屬於同一級別的,是按代碼寫得順序執行的! 而不是先執行靜態變量後執行靜態初始化塊!這是錯的。我舉個例子: public class Test{ static{ cnt = 6; } static int cnt = 100; public static void main(String[] args){ System.out.println("cnt = " + cnt); //最後輸出是50,若是按照錯誤說法就應該是3 //按順序執行就是cnt=6--->cnt=100---->cnt = 100/2 = 50. } static{ cnt /= 2; } }
public class IfTest{ public static void main(string[]args){ int x=3; int y=1; if(x=y) System.out.println(「Not equal」); else System.out.println(「Equal」); } }
What is the result?
正確答案: C編譯器
The output is 「Equal」
The output in 「Not Equal」
An error at line 5 causes compilation to fall.
The program executes but does not print a message.
我來解析下: 其實這個是因爲java和C語言的不一樣處理機制致使的: C語言中 當if語句中的條件爲賦值語句時,其實是將賦值後的結果與0進行比較【左值】 if(1) 因爲1>0 因此認爲是true java語言中,雖然也用了左值,可是再也不與0比較,而是直接將0放入if()中 可是int類型,不能轉換爲boolean,因此會報錯:「 Type mismatch: cannot convert from int to boolean 」
下面哪幾個語句正確的聲明一個整型的二維數組()
正確答案: C D
int a[][]=new int[][]
int b10=new int[][]
int c[][]=new int10
int []d[]=new int10
二維數組的定義方式: 1. int [][] array = new int[n][m]; 2. int [][] array={{1,2,3,4},{1,2,3,4},{1,2,3,4}}; 方式一: 定義二維數組能夠指定不定義m,可是必須定義n.
有關finally語句塊說法正確的是( )
正確答案: A B C D
無論 try 語句塊正常結束仍是異常結束,finally語句塊都是要被執行的
在try語句塊或catch語句塊中執行到System.exit(0)直接退出程序
finally塊中的return語句會覆蓋try塊中的return返回
finally 語句塊在 catch語句塊中的return語句以前執行
結論: 一、無論有木有出現異常,finally塊中代碼都會執行; 二、當try和catch中有return時,finally仍然會執行; 三、finally是在return後面的表達式運算後執行的(此時並無返回運算後的值,而是先把要返回的值保存起來,管finally中的代碼怎麼樣,返回的值都不會改變,任然是以前保存的值),因此函數返回值是在finally執行前肯定的; 四、finally中最好不要包含return,不然程序會提早退出,返回值不是try或catch中保存的返回值。 舉例: 狀況1:try{} catch(){}finally{} return; 顯然程序按順序執行。 狀況2:try{ return; }catch(){} finally{} return; 程序執行try塊中return以前(包括return語句中的表達式運算)代碼; 再執行finally塊,最後執行try中return; finally塊以後的語句return,由於程序在try中已經return因此再也不執行。 狀況3:try{ } catch(){return;} finally{} return; 程序先執行try,若是遇到異常執行catch塊, 有異常:則執行catch中return以前(包括return語句中的表達式運算)代碼,再執行finally語句中所有代碼, 最後執行catch塊中return. finally以後也就是4處的代碼再也不執行。 無異常:執行完try再finally再return. 狀況4:try{ return; }catch(){} finally{return;} 程序執行try塊中return以前(包括return語句中的表達式運算)代碼; 再執行finally塊,由於finally塊中有return因此提早退出。 狀況5:try{} catch(){return;}finally{return;} 程序執行catch塊中return以前(包括return語句中的表達式運算)代碼; 再執行finally塊,由於finally塊中有return因此提早退出。 狀況6:try{ return;}catch(){return;} finally{return;} 程序執行try塊中return以前(包括return語句中的表達式運算)代碼; 有異常:執行catch塊中return以前(包括return語句中的表達式運算)代碼; 則再執行finally塊,由於finally塊中有return因此提早退出。 無異常:則再執行finally塊,由於finally塊中有return因此提早退出。 最終結論:任何執行try 或者catch中的return語句以前,都會先執行finally語句,若是finally存在的話。 若是finally中有return語句,那麼程序就return了,因此finally中的return是必定會被return的, 編譯器把finally中的return實現爲一個warning。
如下 json 格式數據,錯誤的是
正確答案: A C
{company:4399}
{"company":{"name":[4399,4399,4399]}}
{[4399,4399,4399]}
{"company":[4399,4399,4399]}
{"company":{"name":4399}}
下列說法錯誤的有( )
正確答案: A B C D
Java面嚮對象語言允許單獨的過程與函數存在
Java面嚮對象語言允許單獨的方法存在
Java語言中的非靜態方法屬於類中的成員(member)
Java語言中的方法一定隸屬於某一類(對象),調用方法與過程或函數相同
java不容許單獨的方法,過程或函數存在,須要隸屬於某一類中。——AB錯 java語言中的方法屬於對象的成員,而不是類的成員。不過,其中靜態方法屬於類的成員。——C錯 D也錯,方法屬於接口
下列有關JAVA異常處理的敘述中正確的是()
正確答案: A B D
finally是爲確保一段代碼不論是否捕獲異常都會被執行的一段代碼
throws是用來聲明一個成員方法可能拋出的各類非運行異常狀況
final用於能夠聲明屬性和方法,分別表示屬性的不可變及方法的不可繼承
throw是用來明確地拋出一個異常狀況
throws用於在方法上聲明該方法不須要處理的異常類型,用在方法上後面跟異常類名 能夠是多個異常類 throw用於拋出具體異常類的對象,用在方法內 後面跟異常對象只能是一個異常類型實體. try塊必須和catch塊或和finally同在,不能單獨存在,兩者必須出現一個. finally塊總會執行,不管是否有錯誤出現.可是若try語句塊或會執行的catch語句塊使用了JVM系統退出語句,finally塊就不會被執行了. 通常咱們把關閉資源的代碼放在finally裏面 保證資源老是能關閉 而後再看這一題 A確定對了,C根本就跟異常處理沒有關係,因此不選。就算有關係也錯了 final用於聲明屬性、方法、類。分別表示屬性不可更改、方法不能被覆蓋、類不能被繼承。 因此C選項說方法不能被繼承錯誤,是不能覆蓋 B、D咬文嚼字說是由於 B. throws是用來聲明一個成員方法可能拋出的各類異常狀況. 「狀況」錯了應該改爲對象 我表示不能接受,D也同樣。若是沒有更好的理由 我以爲題目答案錯了,就是ABD