本帖最后由 杨_扬 于 2012-7-11 06:44 编辑
上期答案:
第二十二题
下面的类被定义在两个不同的文件中
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. doStuff x = 6main x = 6
D. doStuff x = 5 main x = 5
E. doStuff x = 5 main x = 6
F. doStuff x = 6 main x = 5
答案:D
考虑方法doStuff方法内x的作用域,方法内的x是一个局域变量,因此在方法内完成了++操作之后对main中的x并没有产生作用,因此答案是D
第二十四题
1. public class 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 C extends A,B { public void cMethod(); }
4. class D implements B {
5. public void bMethod(){}
6. }
7. class E extends D implements C {
8. public void aMethod(){}
9. public void 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)(new E())创建了一个类D的实例并调用bMethod()方法,则将调用在第5行处定义的bMethod()方法
F. 如果你使用D e = (D)(new E())创建了一个类D的实例并调用bMethod()方法,则将调用在第9行处定义的bMethod()方法
第二十七题
一下哪段代码诠释了“人类有一个最好的朋友—狗”(Man has a best friend who is a Dog)
A. class Man extends Dog { }
B. class Man implements Dog { }
C. class Man { private BestFriend dog; }
D. class Man { private Dog bestFriend; }
E. class Man { private Dog<bestFriend>; }
第二十八题
有如下代码
31. class Foo {
32. public int a = 3;
33. public void addFive() { a += 5; System.out.print("f "); }
34. }
35. class Bar extends 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 Dog extends Animal {
13. public String noise() { return "bark"; }
14. }
15. class Cat extends Animal {
16. public String 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 Sub extends Super {
12. public Sub(int a) { super(a); }
13. public Sub() { 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 13 to: public Sub() { this(5); }
D. Change line 13 to: public Sub() { super(5); }
E. Change line 13 to: public Sub() { super(a); }
|