OCJP 1Z0-808考题解析 题91--120

91--100(完)

91.

难度:基础题

解析:略

 

 

92.

难度:难点题

解析:创建子类对象时,优先调用父类的构造函数,其次再调用子类的构造函数。

补充知识点:关于Java类的初始化顺序(重点):

  1. 初始化类变量(即static修饰的成员变量),并未赋值。不管写的位置在哪里,只要是类变量,系统总会先找到它进行变量初始化。
  2. 执行静态代码块和类变量定义式,两者根据写的位置来决定先后,先写先执行。其实从某种角度上看,可以把类变量定义赋值视为两部分:一部分是定义变量,一部分赋值。而这个赋值部分可以看做是一个静态代码块。两个静态代码块的执行顺序自然是看写的位置的先后了。
  3. 初始化实例变量(即未被static修饰的成员变量),并未赋值。同样的,不管写的位置在哪里,在创建对象时执行到这步时,系统总会找到它进行变量初始化。
  4. 执行构造代码块和实例变量定义赋值式,两者同样根据写的位置先后来决定执行顺序先后,同样可以按2中所写来理解。但是,这里要注意的就是构造代码块是可以调用静态变量的,实例变量定义赋值式可以看做是只对实例变量进行赋值的构造代码块。
  5. 执行构造函数。构造函数同样可以调用静态变量和实例变量。

    初始化结束。

    这里说明一点:这是初始化顺序,不等同于语句程序的执行过程(毕老师的视频里有个很详细的例子讲这个执行过程,不知道的一定要去看)。因此在上面的初始化顺序里没有成员函数(静态或者非静态都没有),这是因为成员函数都是调用了才执行,虽然静态函数已经被加载进了方法区,但初始化过程中并没有执行过。

  1. 如果有父类,父类先进行以上循环。

 

 

93.

难度:题目错误题

解析:这题印刷有问题,题目不难。

 

 

94.

难度:题目错误题

解析:这题印刷问题,惨不忍睹。

 

 

95.

难度:基础题

解析:多态情况下,子父类存在同名的非静态的成员函数时,访问的是子类的成员函数。

 

 

96.

难度:基础题

解析:子类可以继承父类的成员属性,父类不能继承子类的成员属性。

 

 

97.

难度:题目错误题

解析:这题印刷有问题。答案全是错误的。

 

 

98.

难度:套路题

解析:for循环和while循环的格式不要弄混了。while循环的格式:

循环变量初始化

while(循环变量的条件判断){

循环体语句

循环变量的改变

}

 

 

99.

难度:基础题

解析:正确答案应为E。因为数组越界的,报异常java.lang.ArrayIndexOutOfBoundsException:但是前面的两个catch都没有捕获异常,直到第三个exception捕获了。

 

 

100.

难度:基础题

解析:正确答案应为B。numbers引用重指向了。扩展点知识:数组元素未初始化,元素为基本数据类型,都有默认值。元素为引用类型,输出为null。

 

 

101--120(完)

101.

难度:难点题

解析:其他选项明显不对。这题A选项如果能够加一句把line6的opt改为result就完美了。switch语句参数不接受boolean类型。switch判断的类型有:byte、short、int、char、枚举类型、String类型。

 

 

102.

难度:基础题

解析:正确答案是A。注意是+前后String和int

 

 

103.

难度:基础题

解析:if(aVar++ < 10)这句代码,aVar=9,先去跟10比较,比较之后,aVar再加1。

 

 

104.

难度:不理解题

解析:

  • B.java不能编译的原因是,局部变量不能用权限修饰符修饰。C.java我编译是能够编译的。我认为正确的答案是F。
  • 补充知识点:这篇博客讲得不错https://www.cnblogs.com/Goden/p/3811001.html。 总结: 1. 一个java的源文件中,规定最多只能有一个public 类,当然也可以一个都没有。如果有public公共类,则规定文件名只能public 公共类的类名称一致,若是没有,则文件名可以任意。作为一个java程序的入口(javaSE)的类必须为public类。
  1. 不加权限修饰符的时候 即直接声明 class A{ }  。在这种情况下,class前面没有加任何的访问修饰符,通常称为“默认访问模式”,在该模式下,这个类只能被同一个包中的类访问或引用,这一访问特性又称包访问性。

 

 

105.

难度:基础题

解析:考查String和StringBuilder的API。

选项A:sb.substring(15, 19);根据指定的索引值截取子串,将截取的字符串返回,而不是改变sb自身的字符串内容。

选项D:sb.insert(0, x) ; 是在第0位插入x,结果是“xxxx-xxxx-xxxx-1234-5678-9101-1121”

选项C:sb.append(creditCard, 15, 19); 截取creditCard第15到19位的元素,添加到sb的最后。

 

 

106.

难度:基础题

解析:成员变量bVar默认值是false, do...while循环执行第一次后bVar就等于bVar1,不符合循环判断的条件,循环体只执行一次就结束了。

 

 

107.

难度:基础题

解析:正确答案应为A,只在这里创建了一个对象MarkList obj1 = new MarkList(); obj2没有创建对象,只是引用指向了前面创建的对象。

 

 

108.

难度:阅读理解题

解析:Which three statements describe the object-oriented(面向对象的) features of the Java language?

A. Objects cannot be reused(再生的; 再用,重新使用).

B. A subclass can inherit from(从…继承…,从…得到) a superclass.

C. Objects can share behaviors with other objects.

D. A package must contain more than one class.

E. Object is the root class of all other objects.

F. A main method must be declared in every class

 

 

109.

难度:难点题

解析:list接口方法:boolean remove(Object o);从集合中删除第一个出现的指定元素,返回true。如果此集合不包含该元素,则集合将保持不变,返回false。  

 

 

110.

难度:基础题

解析:略

 

 

111--120(完)

111.

难度:基础题

解析:D,E都没有对i变量声明。

 

 

112.

难度:难点题

解析:导包语句:

  • "*"是 导包语句的通配符。用来匹配任何的类名。
  • import aa.*; 导入aa包下所有的类,但是不会作用于aa包下面的子包的。
  • package aa.bb和package aa是两个完全不同的包,没有任何关系。
  • 选项C没有包名没有类名。

 

 

113.

难度:难点题

解析:死循环一直往list添加元素,添加的元素不会被回收,会引发Java内存溢出错误。

 

 

114.

难度:基础题

解析:正确答案应为C。选项A:没有静态修饰符,无法直接在类中不通过对象调用。选项B:方法名错误且没有返回值。选项D:返回值问题。 选项E:声明返回值类型错误且静态修饰符位置错误。

 

 

115.

难度:基础题

解析:考察调用方法时的值传递和this关键字。

 

 

116.

难度:套路题

解析:java为了区分局部变量的作用域,允许在方法中加{}。本题}{之间没有else。

 

 

117.

难度:基础题

解析:引用类型之间使用==比较,判断的是内存地址。

 

 

118.

难度:不理解题

解析:我不理解题目的意思。记住答案。

 

 

119.

难度:难点题

解析:java二维数组初始化时,第一维数组长度要确定,第二维数组长度可以不确定或者不准确,使用时长度不足时,第二维度数组长度会自动扩展。

补充知识点:java初始化二维数组的三种方式。

//第一种方式:

        int a[][]={{1,2,3},{4,5,6}};

        //第二种方式;

        int[][] ints = new int[4][2];

        ints[2][2] = 22; //分别赋值

        //第三种方式:第二维的长度可以动态申请

        int[][] arr3 = new int[5][];//五行的长度

        for(int i=0; i<arr3.length; ++i){

            arr3[i]=new int[i+1];   //列的长度每次都变化。每次都要重新申请空间(长度)

            for(int j=0; j<arr3[i].length; ++j)

                arr3[i][j]= i+j;

        }

 

 

120.

难度:难点题

解析:

题目:

public class Q120 {

public static void main(String[] args) {

String str1 = "Java";

char str2[] = {'J','a','v','a'};

String str3 = null;

for (char c : str2) {

// 输出结果:一个为null的对象在字符串拼接时是null

str3 = str3 + c;

}

        // if...else...这样写,没错

if(str1.equals(str3))

System.out.println("Successful");

else

System.out.println("UnSuccessful");

}

}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔雷手文泰莱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值