千家信息网

Java面向对象选择题的示例分析

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章主要为大家展示了"Java面向对象选择题的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java面向对象选择题的示例分析"这篇文章吧。1.
千家信息网最后更新 2024年09月21日Java面向对象选择题的示例分析

这篇文章主要为大家展示了"Java面向对象选择题的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java面向对象选择题的示例分析"这篇文章吧。

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

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 )

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、先有子类,其他如何排列都无关

分析:我举两个

像底下这种,是可以的

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是很大的一个类,基本所有异常都继承于它,有了它就可以处理所有的异常,所以导致后面写的就没有意义,所以是错的

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);   //子类异常}}}

以上是"Java面向对象选择题的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0