Java试卷样题

1. 多项选择题

(1) 以下哪项是正确的表达式?

A. Integer i = 4.5;
B. Number i = 4.5;
C. double i = 4.5;
D. Object i = 4.5;

答案: B, C, D
解释: A 选项错误,因为 Integer 只能存储整数,B、C、D 选项是有效的。


(2) 为了防止一个类被实例化,应该使用 _________

A. 在构造函数上使用 static 修饰符。
B. 在构造函数上使用 public 修饰符。
C. 在构造函数上使用 private 修饰符。
D. 在构造函数上不使用任何修饰符。

答案: C
解释: 为了防止类被实例化,需要将构造函数设置为 private,其他选项都不能达到这个目的。


(3) 以下哪些是有效的数组声明?

A. int i = new int(30);
B. double [] = new double[30];
C. int i[] = (3,4,3,2);
D. float f[] = {2.3,4.5,6.6};
E. char[] c = new char();

答案: D
解释: D 选项是有效的数组声明,其他选项都存在语法错误。


2. 简答题

1. 假设 a = 1,每个表达式都是独立的。以下表达式的结果是什么?

  1. a = (a = 3) + a;
  • 结果: 6
  • 解释: 内部赋值 a = 3 先执行,a 变为 3,然后 a + a3 + 3 = 6
  1. a += a + (a = 3);
  • 结果: 7
  • 解释: 右边的表达式先执行,a + (a = 3) 计算为 1 + 3 = 4,然后 a += 4,结果为 7
  1. a = a++ + (++a);
  • 结果: 4
  • 解释: a++ 的值为 1(后自增),++aa 增加到 3,然后表达式为 1 + 3 = 4
  1. a = a + 5 + 4 * 5 % (++a + 1);
  • 结果: 10
  • 解释: ++aa 增加到 2,然后 4 * 5 % (2 + 1) 计算为 20 % 3 = 2,因此结果是 a + 5 + 2 = 10

2. Java 和 C++ 的相同与不同之处是什么?

相同点:

  • Java 和 C++ 都支持面向对象的编程特性,如类、继承、多态和封装。
  • 两种语言都支持类似的基本数据类型和控制结构。

不同点:

  • 内存管理: Java 有自动垃圾回收机制,而 C++ 需要手动管理内存(newdelete)。
  • 平台依赖性: Java 是平台无关的,因为它通过 JVM 执行,而 C++ 是平台相关的,编译成机器代码。
  • 多重继承: C++ 支持多重继承,而 Java 只允许单继承,但可以通过接口实现类似的功能。
  • 指针: C++ 支持指针操作,而 Java 不允许直接操作指针。

3. 综合题

编写一个方法来检查两个单词是否为变位词。

一个变位词是指通过重新排列另一个单词中的字母形成的单词,例如 "silent" 和 "listen" 是变位词。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Arrays;

public class AnagramChecker {
public static boolean areAnagrams(String word1, String word2) {
if (word1.length() != word2.length()) {
return false;
}
char[] arr1 = word1.toCharArray();
char[] arr2 = word2.toCharArray();
Arrays.sort(arr1);
Arrays.sort(arr2);
return Arrays.equals(arr1, arr2);
}

public static void main(String[] args) {
String word1 = "silent";
String word2 = "listen";
System.out.println(areAnagrams(word1, word2)); // 输出: true
}
}

解释:

  • 将两个字符串转换为字符数组。
  • 对字符数组进行排序。
  • 比较排序后的字符数组,如果它们相等,则这两个单词是变位词。