Java 基礎測驗
一、選擇題(共 10 題,每題 5 分)
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a + b + "");
System.out.println("" + a + b);
}
}
class Parent {
public void show() {
System.out.println("Parent");
}
}
class Child extends Parent {
public void show() {
System.out.println("Child");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.show();
}
}
public class Test {
public static void main(String[] args) {
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
二、簡答題(共 2 題,每題 10 分)
三、編程題(共 1 題,20 分)
答案與解析
一、選擇題
a + b + "":先計算a + b = 30,再拼接空字符串,結果為"30"。"" + a + b:先拼接空字符串和a("10"),再拼接b,結果為"1020"。
ArrayList是有序、可重複的;HashSet無序、不可重複;TreeSet有序、不可重複;HashMap是鍵值對集合,無序。
try塊可以沒有catch塊,但必須有finally塊或聲明拋出異常;finally塊中的代碼無論是否發生異常都會執行(除非 JVM 退出);throw用於手動拋出異常,throws用於聲明方法可能拋出的異常。
==比較的是對象的引用地址,s1指向常量池中的對象,s2指向堆中的對象,地址不同;equals()比較的是字符串內容,兩者內容相同。
start()方法用於啓動線程,run()方法用於執行線程任務;- 多個線程訪問共享資源時,若沒有同步機制,可能導致數據不一致;
synchronized關鍵字可以修飾方法或代碼塊。
二、簡答題
- 重載:
- 發生在同一個類中;
- 方法名相同,參數列表(類型、個數、順序)不同;
- 返回值類型、訪問修飾符可以不同;
- 與多態無關。
- 重寫:
- 發生在父類和子類之間;
- 方法名、參數列表、返回值類型必須相同;
- 子類方法的訪問修飾符不能嚴於父類;
- 與多態相關,用於實現子類的個性化行為。
- 存儲結構:
ArrayList基於動態數組實現,連續存儲;LinkedList基於雙向鏈表實現,非連續存儲。
- 訪問效率:
ArrayList隨機訪問(get(int index))效率高,時間複雜度為 O (1);LinkedList隨機訪問效率低,時間複雜度為 O (n),但插入、刪除元素效率高(無需移動元素)。
- 適用場景:
ArrayList適合頻繁查詢、少量插入 / 刪除的場景;LinkedList適合頻繁插入、刪除,少量查詢的場景。
三、編程題
java
運行
public class PrimeSum {
public static void main(String[] args) {
int sum = 0;
for (int i = 2; i <= 100; i++) {
if (isPrime(i)) {
sum += i;
}
}
System.out.println("1到100之間所有質數的和為:" + sum);
}
// 判斷一個數是否為質數
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
// 優化:只需判斷到根號num
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}