.println(\ } }
(A)运行时打印“method1”。
(B)编译时出错:Sub类必须为抽象类。 (C)运行时出错:Sub类不能被实例化。
(D)编译时出错:main()方法中的变量a必须声明为Sub类型。
答案: B 解答:
Sub类没有实现Base父类中的所有抽象方法,因此Sub类必须声明为抽象类。 27. 运行以下程序代码,会打印什么结果?
public class Sample {
public static void main(String args[]) {
StringBuffer a = new StringBuffer(\ StringBuffer b = new StringBuffer(\ swap(a,b);
.println(\ }
static void swap (StringBuffer a, StringBuffer b) { a.append(\ b=a; } }
(A) a is One b is Two (B)
a is One b is One (C)
a is One more b is One more (D)
a is One more b is Two
答案: D 解答:
swap()方法的参数a与main()方法中的变量a都引用同一个StringBuffer对象,swap()方法的a.append(\会修改参数a引用的StringBuffer对象的内容。
28. 以下代码能否通过编译,如果能通过编译,运行时得到什么打印结果?
01: int output=20; 02: boolean b1 = false;
03: if((b1==true) && ((output+=10)==30)){ 04: .println(\ 05: }else{
06: .println(\ 07: }
(A)编译时出错:第3行的逻辑表达式语法不正确。 (B)运行时打印“We are equal 30”。 (C)运行时打印“Not equal! 20”。 (D)以上选项都不正确。
答案: C 解答:
“&&”为短路逻辑与操作符。表达式“b1==true”的值为false,可以得出整个if条件表达式的值为false,因此表达式“(output+=10)==30”不会被执行,output变量的值仍为20。 29. 在一个Frame容器中加入了一个Button,当Frame的大小发生变化, Button的大小保
持不变。Frame采用了什么布局管理器? (A) FlowLayout (B) GridLayout (C) BorderLayout (D) CardLayout
答案: A 解答:
FlowLayout布局管理器会使得加入到容器中的组件始终保持最佳大小。当容器的大小发生变化, 组件的大小保持不变。 30. 封装的主要特点是什么?
(A) 对象的所有方法都是public类型的。 (B) 对象的所有方法都不会抛出异常。
(C) 当对象的内部实现细节发生变化,只要接口不变,就不会影响使用者的程序代码。
(D) 当对象的接口发生变化,只要内部实现细节不变,就不会影响使用者的程序代码。
答案: C 解答:
封装主要指对象封装实现细节,仅仅对外公开接口。当对象的实现细节发生变化,只要接口不变,就不会影响使用者的程序代码。
31. 以下哪个集合不允许存放重复的Java对象? (A) Map (B) List (C) Set
(D) Collection
答案: C 解答:
.Set中不允许存放重复的Java对象。 32. 关于非静态内部类,以下哪个说法正确?
(A) 它必须实现一个接口。
(B) 它可以访问外部类的private类型的实例变量。 (C) 只有它的外部类才能创建它的实例。
(D) 如果它位于一个方法中,必须声明为final类型。
答案: B 解答:
非静态内部类可以直接访问外部类的private类型的实例变量。 33. String类是在哪个包中定义的? (A) (B) (C) (D)
答案: B 解答:
String类在包中定义。
34. 对于以下程序代码,运行时得到什么打印结果?
public class Sample{ private void test() { int i = 1; switch (i) { case 0:
.println(\ break; case 1:
.println(\ case 2:
.println(\ default:
.println(\ }
}
public static void main(String[] args){ new Sample().test(); } }
(A) one
(B) one, default (C) one, two, default (D) default
答案: C 解答:
以上switch表达式与case1表达式匹配,就从这个case1子句开始执行,由于没有遇到break语句,就依次执行switch语句中后续的case子句和default子句。 35. 对于“switch(a)”表达式中的变量a,它可以被声明为哪些合法数据类型?
(A) boolean, byte, char, short, int, long (B) boolean, byte, char, short, int (C) byte, char, short, int
(D) boolean, byte, char, short, int, long, float, double
答案: C 解答:
在“switch(a)”表达式中,变量a的类型必须是与int类型兼容的基本类型,所谓与int类型兼容,就是指能自动转换为int类型。因此变量a的合法类型包括:byte、char、short和int类型。
36. 以下程序代码能否通过编译,如果通过编译,运行“java Sample”时会出现什么情况?
public class Sample{ boolean b;
private void test() { if(b=true)
.println(\ else
.println(\ }
public static void main(String[] args){ new Sample().test(); } }
(A) 运行时打印“b is true”。 (B) 运行时打印“b is false”。 (C) 运行时抛出异常。 (D) 编译时出错。
答案: A 解答:
对于“if(b=true)”条件表达式,操作符“=”把变量b赋值为true,因此整个if条件表达式的值也是true。
37. 以下程序代码的第3行用new语句创建了一个字符串对象“Hello”,执行完哪一行,这
个“Hello”对象变成无用对象,可以被垃圾回收器回收?
01: public class Sample{ 02: private void test() {
03: String anObj =new String(\04: ();
05: anObj = erCase(); 06: anObj = null; 07: } 08:
09: public static void main(String[] args) { 20: new Sample().test(); 21: } 22: 23: }
(A)第4行 (B)第5行 (C)第6行 (D)第7行
答案: B 解答:
String类的toUpperCase()方法返回一个新的String对象,因此执行完第5行后,anObj变量引用一个新的String对象,原先的“Hello”对象不再被任何变量引用,它变为无用对象。
38. 以下程序代码的第4行用new语句创建了一个字符串对象“Hello”,执行完哪一行,这
个“Hello”对象变成无用对象,可以被垃圾回收器回收?
01: public class Sample{ 02:
03: private void test() {
04: String obj1 =new String(\05: String obj2 = obj1; 06: ();
07: obj1 = null; 08: (); 09: } 10:
11: public static void main(String[] args) { 12: new Sample().test(); 13: } 14: }