您的位置:首页 > 编程语言 > Java开发

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

2012-07-11 06:43 417 查看
上期答案

第二十二题

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

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); }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: