更新時間:2020-08-17 16:20:09 來源:動力節點 瀏覽3134次
1、運算符優先級問題,下面代碼的結果是多少?
public?class?Test?{?
????public?static?void?main(String[]?args)?{?
????????int?k?=?0;?
????????int?ret?=?++k?+?k++?+?++k?+?k;?
????????//?ret的值為多少?
????????System.err.println(ret);?
????}?
}
解答:主要考察++i和i++的區別。++在前則先自增再賦值運算,++在后則先賦值再自增運算。因此,結果為8。
2、運算符問題,下面代碼分別輸出什么?
public?class?Test?{?
????public?static?void?main(String[]?args)?{?
????????int?i1?=?10,?i2?=?10;?
????????System.err.println("i1?+?i2?=?"?+?i1?+?i2);?
????????System.err.println("i1?-?i2?=?"?+?i1?-?i2);?
????????System.err.println("i1?*?i2?=?"?+?i1?*?i2);?
????????System.err.println("i1?/?i2?=?"?+?i1?/?i2);?
????}?
}
解答:主要考察兩點,運算符的優先級、字符串與數字中的+為連接符號。
第一條中,都是相加,則從前到后的順序運算,字符串與數字相加,連接為一個字符串,再與后面的數字相加,再次連接為字符串,因此結果為“i1 + i2 = 1010”。
第二條編譯錯誤,字符串無法與數字用減號連接。
第三條、第四條中乘除的優先級高,會先運算,而后再與字符串連接,因此結果分別為:“i1 * i2 = 100”、“i1 * i2 = 1”。
3、下面代碼的結果是什么?
public?class?Test?{?
????public?void?myMethod(String?str)?{?
????????System.err.println("string");?
????}?
????public?void?myMethod(Object?obj)?{?
????????System.err.println("object");?
????}?
?
????public?static?void?main(String[]?args)?{?
????????Test?t?=?new?Test();?
????????t.myMethod(null);?
????}?
}
解答:這道題考察重載方法參數具有繼承關系時的調用問題,還有對null的認識。如果是一般具有繼承關系的對象分別作為參數,看對象的引用,如:
class?A?{
}
??
class?B?extends?A?{
}?
?
public?class?Test?{?
????public?static?void?main(String[]?args)?{
????????A?b1?=?new?B();
????????B?b2?=?new?B();
????????get(b1);//?A
????????get(b2);//?B
????}
????public?static?void?get(A?a)?{
????????System.out.println("A");
????}
?
????public?static?void?get(B?a)?{
????????System.out.println("B");
????}
}
這道題中,Object是一切類的父類,具有繼承關系,那null是指向什么呢?null是任何引用類型的初始值,String和Object的初始值都是null,但是null會優先匹配引用類型參數為String的方法,因此這道題答案是string。假設這道題中還有其他同是引用類型的重載方法呢?如:
public?void?myMethod(Integer?obj)?{??
????System.err.println("Integer");??
}
如果是這樣的話,調用這個方法傳入參數null時會報錯,他不知道選哪個方法進行匹配調用了。
4、假設今天是9月8日,下面代碼輸出什么?
public?class?Test?{?
????public?static?void?main(String[]?args)?{?
????????Date?date?=?new?Date();?
????????System.err.println(date.getMonth()?+?"?"?+?date.getDate());?
????}?
}
解答:這道題考察的是日期中獲取的月份是從0開始的,因此會比我們日常的月份少1,這個題答案是8 8。
以上就是動力節點java培訓機構的小編針對“精選java代碼審計筆試題”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習