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;
}
}