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

32103210
84218421
10100101

0xa5 = 10100101
~(0xa5)(按位取反)
01011010

0xaa

32103210
84218421
10101010
01011010 & 10101010

01011010
10101010 与: 只有当两个位都为 1 时,结果才为 1。
00001010 = 10