不看OCJP考题你永远不知道自己的JAVA基础有多差(六)

上期答案

第二十二题

下面的类被定义在两个不同的文件中

1. package util;

2. public classBitUtils {

3.     private static void process(byte[] b) {}

4. }

 

1. package app;

2. public classSomeApp {

3.     public static void main(String[] args) {

4.              byte[] bytes = new byte[256];

5.              // insert code here

6.     }

7. }

在SomeApp的第五行插入那条代码可以允许主方法调用BitUtils类的process方法?

A. process(bytes);

B.BitUtils.process(bytes);

C.app.BitUtils.process(bytes);

D.util.BitUtils.process(bytes);

E. importutil.BitUtils.*; process(bytes);

F.无法实现.

答案:F

知识点:

JAVA访问权限的问题,我个人认为这个问题问的挺傻的。就算最“博爱”的public权限咱要使用他也要先导包不是?另外,如果process的访问修饰符是public的话,答案E是正确的

 

第二十三题

13. public class Pass {

14.           public static void main(String[]args){

15.            int x = 5;

16.           Pass p = new Pass();

17.                   p.doStuff(x);

18.                   System.out.print(" main x=" + x);

19.  }

20

21.           void doStuff(int x) {

22.                    System.out.print("doStuff x = " + x++);

23.           }

24. }

程序的运行结果是?

A. 编译失败.

B. 运行时抛出异常.

C. doStuffx = 6main x = 6

D. doStuffx = 5 main x = 5

E. doStuffx = 5 main x = 6

F. doStuffx = 6 main x = 5

答案:D

考虑方法doStuff方法内x的作用域,方法内的x是一个局域变量,因此在方法内完成了++操作之后对main中的x并没有产生作用,因此答案是D

 

第二十四题

1. publicclass GC {

2.     private Object o;

3.      private void doSomethingElse(Object obj){o = obj; }

4.      public void doSomething() {

5.             Object o = new Object();

6.              doSomethingElse(o);

7.              o = new Object();

8.              doSomethingElse(null);

9.              o = null;

10.  }

11. }

如果方法doSomething被调用,在代码的哪一行之后,在第五行创建的Object对象变为可被garbage collector所回收的对象

A. Line 5

B. Line 6

C. Line 7

D. Line 8

E. Line 9

F. Line 10

答案 D

知识点:

要解释清楚这个问题又要堆内存,栈内存的说一大堆,懒得说了,反正大家就记住了吧,空对象不论你创建了多少个,实际上都只有那一个,这里我说的空对象不是null,null你可以理解为什么对象都没有,空对象起码有对象存在,只不过里面内内容。我下面给一段代码出来,对此不明白的可以运行代码看看结果就应该明白了,如果实在不明白,直接联系我,起码我是给一个认真看过题目的人讲心里还不那么别扭

public class NewObject {

   public static void main(String[] args) {

      String a = "";

      String b = "";

      System.out.println(a.hashCode());

      System.out.println(b.hashCode());

   }

}

 

第二十五题

 

11. public staticvoid test(String str) {

12.           int check = 4;

13.           if (check = str.length()) {

14.                   System.out.print(str.charAt(check -=  1) +" ");

15.           } else {

16.                    System.out.print(str.charAt(0)+ " ");

17.           }

18. }

并且调用

21.test("four");

22. test("tee");

23.test("to");

结果是什么?

A. r t t

B. r e o

C. 编译失败.

D.运行时抛出异常.

答案C

老外出题有时候也挺无聊的不是嘛?说真的这道题我开始的时候也选A,结果就掉坑了,有木有。仔细看第13行if的判断条件,里面用的是“=”而不是“==”当然编译失败了。坑爹啊,天坑。

---------------------------------------------------------分割线----------------------------------------------

本期问题:

第二十六题

1. interface A {public void aMethod(); }

2. interface B {public void bMethod(); }

3. interface Cextends A,B { public void cMethod(); }

4. class Dimplements B {

5.    public void bMethod(){}

6. }

7. class E extends Dimplements C {

8.      public void aMethod(){}

9.     publicvoid bMethod(){}

10.   public void cMethod(){}

11. }

What is the result?

A. 因为第3行存在问题,因此编译失败.

B. 因为第7行存在问题,因此编译失败.

C. 因为第9行存在问题,因此编译失败.

D. 如果你使用D e = new E()创建了一个类D的实例并调用bMethod()方法,则将调用在第5行处定义的bMethod()方法

E. 如果你使用D e = (D)(newE())创建了一个类D的实例并调用bMethod()方法,则将调用在第5行处定义的bMethod()方法

F. 如果你使用D e = (D)(newE())创建了一个类D的实例并调用bMethod()方法,则将调用在第9行处定义的bMethod()方法

 

第二十七题

一下哪段代码诠释了“人类有一个最好的朋友—狗”(Manhas a best friend who is a Dog)

A. class Man extendsDog { }

B. class Manimplements Dog { }

C. class Man {private BestFriend dog; }

D. class Man {private Dog bestFriend; }

E. class Man {private Dog<bestFriend>; }

 

第二十八题

有如下代码

31. class Foo {

32.  publicint a = 3;

33.   public void addFive() { a += 5;System.out.print("f "); }

34. }

35. class Barextends Foo {

36.   public int a = 8;

37.   public void addFive() { this.a += 5;System.out.print("b " ); }

38. }

执行一下三行代码

Foo f = new Bar();

f.addFive();

System.out.println(f.a);

结果是什么?

A. b 3

B. b 8

C. b 13

D. f 3

E. f 8

F. f 13

G. 编译失败.

H. 抛出异常.

 

第二十九题

11. class Animal {public String noise() { return "peep"; } }

12. class Dogextends Animal {

13.   public String noise() { return"bark"; }

14. }

15. class Catextends Animal {

16.   publicString noise() { return "meow"; }

17. } ...

30. Animal animal =new Dog();

31. Cat cat =(Cat)animal;

32.System.out.println(cat.noise());

以上代码执行的结果是

A. peep

B. bark

C. meow

D. 编译失败.

E. 抛出异常.


第三十题

1. class Super {

2.      private int a;

3.      protected Super(int a) { this.a = a; }

4. } ...

11. class Subextends Super {

12.   public Sub(int a) { super(a); }

13.  publicSub() { this.a = 5; }

14. }

一下哪两种修改可以使得以上代码编译通过 (Choose two.)

A. Change line 2 to:public int a;

B. Change line 2 to:protected int a;

C. Change line 13to: public Sub() { this(5); }

D. Change line 13to: public Sub() { super(5); }

E. Change line 13to: public Sub() { super(a); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值