OCJP8题库解析(1)

发布于 2018-01-19  1.83k 次阅读


下文所有字符仅为个人观点,如有错误恳请指正。

All the characters below is a personal opinion, if there is any mistake, please correct me.

 

1)类中的静态成员属于类本身。

2)String类的concat方法需要返回值。

3)考核java异常机制:

  1. 改进项目结构,分离错误处理代码与正常函数。
  2. 选择处理错误的位置。
  3. 自定义异常。

4)this关键字表示调用构造方法,题中this方法没有参数,而类中没有无参构造器从而发生错误。

5)B选项super方法在main函数中调用出错(静态方法只能调用静态方法),且参数应为n1与n2

C选项子类使用父类默认构造方法定义出错。

E选项非静态方法。

6)关于日期的格式。

7)略。

8)ISO_DATE_TIME精确到时间。

9)args[0]为用控制台编译时候传入的第一个参数。

10)题目有问题。

11)略。

12)这里的indexOf是属于ArrayList类的方法,功能如下:

返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。更确切地讲,返回满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i ,如果不存在此类索引,则返回 -1。
是否包含元素不是根据值是否相等判定,而是根据地址的比较。

13)Super关键字的用法:

1.普通的直接引用,super相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的成员。

2.子类与父类同名方法的区别调用。

3.引用父类的构造器,例如super(参数),需要注意的是此语句只能出现在子类构造器的第一条。

14)正确答案应为AB。

15)正确答案为BCF。知识点:一个类有唯一的私有构造器。

16)正确答案为A。

17)略。

18)switch语句规范。

19)Product p3创建了一个引用,之后初始化的过程中,将这个引用指向了p1的内存地址。p1和p3共同引用一个内存地址(引用相等),此时对p3或者p1进行的操作都会反映在两者身上。

对象的“==”与equals(没经过重写,继承于object基类)方法比较的都是内存地址。

20)关于java基本类型以及其默认值:

  • boolean          false
  • char                 '\uoooo'(null)
  • byte                 (byte)0
  • short                (short)0
  • int                    0
  • long                 0L
  • float                 0.0f
  • double             0.0d

21)关于抛出异常的方式:

  1. println方法:普通默认toString方法将打印异常名以及异常详细消息(无消息将只打印异常),getMessage方法只会打印异常详细消息(无消息打印null)。
  2. printStackTrace方法:将打印异常的栈轨迹(以红色字符打印toString的内容以及报错位置)。

22)23)24)25)26)27)略。

28)正确输出应为“A B C C ”,replace方法返回替代后的字符串需要变量接收。

29)关于异常的处理方式:

  1. 捕获:通过trycatchfinaly关键字的语句块捕获处理检查性异常。
    try{
      // 程序代码
    }catch(异常类型1 异常的变量名1){
      // 程序代码
    }catch(异常类型2 异常的变量名2){
      // 程序代码
    }finally{
      // 程序代码
    }
  2. 抛出:处理不了的异常或者要转型的异常,在方法的声明处通过throws语句声明异常throw关键字抛出异常。
    public class className
    {
       public void withdraw(double amount) throws RemoteException,
                                  InsufficientFundsException
       {
           // Method implementation
       }
       //Remainder of class definition
    }

30)31)32)略。

33)关于foreach循环的语法糖(Syntactic Sugar)。

34)略。

35)pdf中解析说的很清楚,就翻译一下:当一个抽象类被继承的时候,子类往往实现了其父类的所有抽象方法,如果不这么做,子类必须也为抽象类。

36)二维数组length方法返回行数。

37)对象"="是更换引用地址,nums1=nums2;使nums1的引用指向了nums2的内存地址,与之前的引用地址(包括限制的长度)不再有关联。

38)参数生命周期。

39)见第20提题解析。

40)41)略。

42)答案错误,应该选择B。

43)关于Java8的lambda表达式与函数式接口的应用。

44)见第29题对异常的处理方式。

45)详见https://www.cnblogs.com/jtlgb/p/5985120.html

Runtime Exception
在定义方法时不需要声明会抛出runtime exception; 在调用这个方法时不需要捕获这个runtime exception(被JVM处理); runtime exception是从java.lang.RuntimeExceptionjava.lang.Error类衍生出来的。 例如:nullpointexceptionIndexOutOfBoundsException就属于runtime exception

Exception:
定义方法时必须声明所有可能会抛出的exception; 在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;exception是从java.lang.Exception类衍生出来的。例如:IOExceptionSQLException就属于Exception

46)args[0]是用命令行编译运行java程序时,传入的第一个参数。

47)Java运算符优先级

48)StringBuilderappend方法:

StringBuilder sb=new StringBuilder("abc");
sb.append("123");
System.out.println(sb);//输出abc123

insert方法:

StringBuilder sb=new StringBuilder("abc");
sb.insert(0,"123");//第一个参数是位置
System.out.println(sb);//输出123abc

49)trim方法返回值需要变量来接收。

50)略。

 

附例题下载:

Link: https://pan.baidu.com/s/1qZW7nWg
Password: ue65

面向ACG编程