"达内数组题 外企部"
这些题目是针对Java编程语言的面试和笔试题,主要考察考生对Java基础知识的理解,特别是数组和异常处理方面。下面是对两个问题的详细解析:
**问题10**
给定的Java代码片段如下:
```java
public class Certkiller5 {
public static void main(String[] yahoo) {
for (int x = 1; x < yahoo.length; x++) {
System.out.println(yahoo[x] + "");
}
}
}
```
在命令行中运行 `java Certkiller5 Abd`,这里的参数 `Abd` 被传递给 `main` 方法的 `String[] yahoo` 参数。程序将遍历数组 `yahoo`,从索引1(即第二个元素)开始打印。
- A. `ab` - 不正确,因为只打印了第二个和第三个元素。
- B. `bc` - 不正确,同上。
- C. `abc` - 正确,会打印出 'b' 和 'c',因为 'a' 是数组的第一个元素,索引从0开始,所以不会被打印。
- D. Compilation fails - 不正确,代码可以成功编译。
- E. An exception is thrown at runtime - 不正确,没有会导致运行时异常的代码。
因此,正确答案是 C. `abc`。
**问题11**
给定的Java代码片段如下:
```java
public class CertKiller3 {
static int[] a;
static {
a[0] = 2;
}
}
```
尝试运行这段代码时,会抛出异常,因为数组 `a` 尚未初始化就被赋值。在Java中,对未初始化的数组进行访问会导致 `ArrayIndexOutOfBoundsException`。
- A. java.lang.StackOverflowError - 当栈溢出时抛出,此情况与此题无关。
- B. java.lang.IllegalStateException - 通常在不适当的状态下执行操作时抛出,这并不适用于数组初始化。
- C. java.lang.ExceptionInInitializerError - 当静态初始化器或静态字段初始值表达式抛出异常时,这个错误会被抛出,符合本题的情况。
- D. java.lang.ArrayIndexOutOfBoundsException - 在尝试访问数组不存在的索引时抛出,但这里不是直接访问,而是试图赋值。
正确答案是 C. java.lang.ExceptionInInitializerError,因为尝试在数组未初始化时就对其元素进行赋值。
通过这两个问题,我们可以复习Java中的数组操作以及异常处理。在实际编程中,确保对数组的访问和使用都是安全的,避免数组越界和未初始化的引用。同时,理解Java中的异常体系对于有效地调试和编写健壮的代码至关重要。