public class Test {
public static void main(String[] args){
int [] array={2,4,6,8,10};
int size=6;
int result=-1;
try {
for(int i=0;i<size && result==-1;i++)
if(array[i]==20) result = i;
}
catch(ArithmeticException e){
System.out.println("Catch---1 ");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("Catch---2 ");
}
catch(Exception e){
System.out.println("Catch---3");
}
}Catch---1
Catch---2
Catch---3
以上都不对
本题答案为D。解释:本题考查的是Java程序结构。 Java使用try语句包括可能抛出异常的代码段,用catch语句指明要捕获的异常相应的处理代码。Java预定义了一些常见异常类,如: ①ArithmeticException,算术异常,如整数除法中,如果除数为0,则发生该类异常; ②ArrayIndexOutofBoundsException,数组索引越界异常,当对数组的索引值为负数或大于等于数组大小时抛出。但是本题程序中缺少一个”}“,所以程序编译不通过,更无法运行。如果加上"}"则本题程序执行到第i=6次循环时,会发生数组下标越界异常,即输出:Catch---2。
System.out.println(~(0xa5) & 0xaa);0xa5
| 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|
| 8 | 4 | 2 | 1 | 8 | 4 | 2 | 1 |
| 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
0xa5 = 10100101
~(0xa5)(按位取反)
01011010
0xaa
| 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|
| 8 | 4 | 2 | 1 | 8 | 4 | 2 | 1 |
| 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
| 01011010 & 10101010 |
01011010
10101010 与: 只有当两个位都为 1 时,结果才为 1。
00001010 = 10