好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java面向对象选择题总结归纳

把最近听的写的一些题目做下笔记!

1.下列程序的执行,说法错误的是 ( abc )

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public class multicatch  {

   public static void main(string args[]){

     try {

       int a=args.length;

       int b= 42 /a;    //10行

       int c[]={ 1 };

       c[ 42 ]= 99 ;

       system.out.println( "b=" +b);

     } catch (arithmeticexception e){          

       system.out.println( "除0异常:" +e);       // 15行

     } catch (arrayindexoutofboundsexception e) {

       system.out.println( "数组超越边界异常:" +e);   // 19行

     }

   }

}

a、程序将输出第15行的异常信息
b、程序第10行出错
c、程序将输出]b=42]
d、程序将输出第15或者19行的异常信息

笔记:首先分析a选项,它说第15行将会输出异常信息,那我们先看下整个程序,int a =args.length 这一句是获取args数组的长度,这个地方也许很多人都不清楚,都认为这里就是空的,也就是长度为0,那么肯定会抛出异常的,但是其实这个main中的这个数组是可以赋值的(这里大家可以百度一下),这个赋值是很特殊的,所以a不对,不一定会抛出异常。

同样b也是一样的道理。

我们看c、程序将输出]b=42]。很显然如果args数组真为0,那么他会跳过system.out.println([b=]+b);直接进入catch语句抛出异常,所以不一定会输出42。

看d、程序将输出第15或者19行的异常信息,很显然数组越界是百分之百会报错的,但是不一定会有除0异常,所以d对。

2. 此方法返回值是多少(b )

?

1

2

3

4

5

6

7

8

9

10

11

12

public static int divide(){

     int i = 3 ;

     try {

       int a = 10 / 0 ;

       return i;

     } catch (exception e) {

       i = 4 ;

       return i;

     } finally {

       i = 5 ;

     }

   }

a.3
b.4
c.5
d.报异常错误

分析:这个题确实有点坑,但是return掌握完全 就没问题了,相信大部分人选c,但实际答案确实b。我们先一步一步分析,首先try中的肯定会抛出异常,于是到了int a =10\0 的时候就直接跳到了catch语句中,此时i被赋值为4,并且此时return 返回 i值,我们都知道finally的语句中是最后一定会执行的,但是我们在catch中把 i 给返回了,其他的任何赋值都没用!!!

所以选b。

3。对于catch子句的排列,下列哪种是正确的( b )

a、父类在先,子类在后
b、子类在先,父类在后
c、有继承关系的异常不能在同一个try程序段内
d、先有子类,其他如何排列都无关

分析:我举两个

像底下这种,是可以的

?

1

2

3

4

5

6

7

8

9

10

11

public class multicatch  {

public static void main(string args[]){

try {

。。。。此处省略

} catch (arithmeticexception e){       //子类异常   

system.out.println( "除0异常:" +e);      

} catch (exception e) {

system.out.println( "异常:" +e);   //父类异常

}

}

}

像底下这种就不行,回报错,因为exception是很大的一个类,基本所有异常都继承于它,有了它就可以处理所有的异常,所以导致后面写的就没有意义,所以是错的

?

1

2

3

4

5

6

7

8

9

10

11

public class multicatch  {

public static void main(string args[]){

try {

。。。。此处省略

} catch (exception e){       //父类异常   

system.out.println( "异常:" +e);      

} catch (arithmeticexception e) {

system.out.println( "除0异常:" +e);   //子类异常

}

}

}

好吧,今天就写这么多,以后会继续给大家分享我做的一些题目

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/qq_36547531/article/details/81659929

查看更多关于Java面向对象选择题总结归纳的详细内容...

  阅读:10次