一. 选择题(234)
1.下面中哪两个可以在 A 的子类中使用:
(
)
class A {
protected int method1 (int a, int b) {
return 0;
}
}
A. public int method 1 (int a,
B. private int method1 (int a,
C. private int method1 (int a,
D. public short method1 (int a, int b) { return 0; }
解答:AC
主要考查子类重写父类的方法的原则
B,子类重写父类的方法,访问权限不能降低
int b) { return 0; }
int b) { return 0; }
long b) { return 0; }
C,属于重载
D,子类重写父类的方法 返回值类型要相同或是父类方法返回值类型的子类
2.Abstract method cannot be static. True or False ?
A True
B False
解答:A
抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态
属性与对象是
无关的,只与类有关,这与 abstract 是矛盾的,所以 abstract 是不能被修饰为
static,否则就
失去了 abstract 的意义了
3.What will be the output when you compile and execute the following program.
class Base
{
void test() {
System.out.println("Base.test()");
}
}
public class Child extends Base {
void test() {
System.out.println("Child.test()");
}
static public void main(String[] a) {
Child anObj = new Child();
Base baseObj = (Base)anObj;
baseObj.test();
}
}
Select most appropriate answer.
A Child.test()
Base.test()
B Base.test()
Child.test()
C Base.test()
D Child.test()
解答:D
测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父
类
的 test 方法,因此调用子类的 test 方法。
4.What will be the output when you compile and execute the following program.
class Base
{
static void test() {
System.out.println("Base.test()");
}
}
public class Child extends Base {
void test() {
System.out.println("Child.test()");
Base.test(); //Call the parent method
}
static public void main(String[] a) {
new Child().test();
}
}
Select most appropriate answer.
A Child.test()
Base.test()
B Child.test()
Child.test()
C Compilation error. Cannot override a static method by an instance method
D Runtime error. Cannot override a static method by an instance method
解答:C
静态方法不能在子类中被重写
5.What will be the output when you compile and execute the following program.
public class Base{
private void test() {
System.out.println(6 + 6 + "(Result)");
}
static public void main(String[] a) {
new Base().test();
}
}
Select most appropriate answer.
A 66(Result)
B 12(Result)
C Runtime Error.Incompatible type for +. Can't convert an int to a string.
D Compilation Error.Incompatible type for +. Can't add a string to an int.
解答:B
字符串与基本数据类型链接的问题,如果第一个是字符串那么后续就都按字符串处理,比如
上边例子要
是 System.out.println("(Result)"+6 + 6 );那么结果就是(Result)66,如果第一个和第二
个。。
。
第 n 个都是基本数据第 n+1 是字符串类型,那么前 n 个都按加法计算出结果在与
字符串连接
6..What will be the output when you compile and execute the following program. The symbol ’
⌴ ’ means space.
}
}
private void test() {
String aStr = "⌴ One⌴ ";
String bStr = aStr;
aStr.toUpperCase();
aStr.trim();
System.out.println("[" + aStr + "," + bStr + "]");
1:public class Base{
2:
3:
4:
5:
6:
7:
8:
9:
7:
8:
9:
10:
11:
12: }
Select most appropriate answer.
A [ONE,⌴ One⌴ ]
B [⌴ One⌴ ,One]
C [ONE,One]
D [ONE,ONE]
E [⌴ One⌴ ,⌴ One⌴ ]
解答:E
通过 String bStr = aStr;这句代码使 bStr 和 aStr 指向同一个地址空间,所以最后 aStr 和
bStr 的结
static public void main(String[] a) {
new Base().test();
果应该是一样,String 类是定长字符串,调用一个字符串的方法以后会形成一个新的
字符串。
7.下面关于变量及其范围的陈述哪些是不正确的(
A.实例变量是类的成员变量
B.实例变量用关键字 static 声明
C.在方法中定义的局部变量在该方法被执行时创建
D.局部变量在使用前必须被初始化
):
解答:BC
由 static 修饰的变量称为类变量或是静态变量
方法加载的时候创建局部变量
:
8.下列关于修饰符混用的说法,错误的是( )
A.abstract 不能与 final 并列修饰同一个类
B.abstract 类中可以有 private 的成员
C.abstract 方法必须在 abstract 类中
D.static 方法中能处理非 static 的属性
解答 D
:静态方法中不能引用非静态的成员
9. 执 行 完 以 下 代 码 int [ ]
(
A、
B、
C、
D、
解答:A
x 属于引用类型,该引用类型的每一个成员是 int 类型,默认值为:0
10.编译运行以下程序后,关于输出结果的说明正确的是 (
x[24]为 0
x[24]未定义
x[25]为 0
x[0]为空
) :
x = new int[25] ; 后 , 以 下 哪 项 说 明 是 正 确 的
):
public class
Conditional{
public static void
x=4;
main(String args[ ]){
int
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
输出结果为:value
输出结果为:value
输出结果为:value
编译错误
}
}
A、
B、
C、
D、
解答:C
三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算
结果
is 99.99
is 9
is 9.0
由容量高的决定。99.9 是 double 类型 而 9 是 int 类型,double 容量高。
11.关于以下 application 的说明,正确的是(
)
1. class
2. {
3.
4.
5.
6.
7.
8.
9.
StaticStuff
:
static int x=10;
static { x+=5;}
public static void main(String args[ ])
{
System.out.println(“x=” + x);
}
static { x/=3;}
private static int x=100;
public static void main(String args[ ]){
):
}
10.
A、 4 行与 9 行不能通过编译,因为缺少方法名和返回类型
B、 9 行不能通过编译,因为只能有一个静态初始化器
C、 编译通过,执行结果为:x=5
D、编译通过,执行结果为:x=3
解答:C
自由块是类加载的时候就会被执行到的,自由块的执行顺序是按照在类中出现的先后顺序执
行。
12.关于以下程序代码的说明正确的是(
1.class HasStatic{
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12. }
13.}
A、5 行不能通过编译,因为引用了私有静态变量
B、10 行不能通过编译,因为 x 是私有静态变量
C、程序通过编译,输出结果为:x=103
D、程序通过编译,输出结果为:x=102
解答:D
静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静态变量 x, 静态
变量可以通
HasStatic hs1=new HasStatic( );
hs1.x++;
HasStatic hs2=new HasStatic( );
hs2.x++;
hs1=new HasStatic( );
hs1.x++;
HasStatic.x--;
System.out.println(“x=”+x);
过类名调用。
13.下列说法正确的有()
A. class 中的 constructor 不可省略
B. constructor 必须与 class 同名,但方法不能与 class 同名
C. constructor 在一个对象被 new 时执行
D.一个 class 只能定义一个 constructor
解答:C
构造方法的作用是在实例化对象的时候给数据成员进行初始化
A.类中如果没有显示的给出构造方法,系统会提供一个无参构造方法
B.构造方法与类同名,类中可以有和类名相同的方法
D.构造方法可以重载
14.下列哪种说法是正确的()
A.实例方法可直接调用超类的实例方法
B.实例方法可直接调用超类的类方法
C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法
解答:D
A. 实例方法不可直接调用超类的私有实例方法
B. 实例方法不可直接调用超类的私有的类方法
C.要看访问权限
15.下列哪一种叙述是正确的( )
A. abstract 修饰符可修饰字段、方法和类
B. 抽象方法的 body 部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号
解答:D
abstract 可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}
16.下面代码的执行结果是?
import java.util.*;
public class ShortSet{
public static void main(String args[])
{
Set s=new HashSet();
for(Short i=0;i<100;i++)
{
s.add(i);
s.remove(i-1);
}
System.out.println(s.size());
}
}
A.1
B.100
C.Throws Exception
D.None of the Above
解答:B
i 是 Short 类型 i-1 是 int 类型,其包装类为 Integer, 所以 s.remove(i-1);不能移除 Set
集合中 Short
类型对象。
17.链表具有的特点是:(选择 3 项)
A、不必事先估计存储空间
B、可随机访问任一元素
C、插入删除不需要移动元素
D、所需空间与线性表长度成正比
解答:ACD
A.采用动态存储分配,不会造成内存浪费和溢出。
B. 不能随机访问,查找时要从头指针开始遍历
C. 插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素
D. 需要用额外空间存储线性表的关系,存储密度小
。(选择 1 项)
18.Java 语言中,String 类的 IndexOf()方法返回的类型是?
A、Int16 B、Int32 C、int D、long
解答:C
indexOf 方法的声明为:public int indexOf(int ch)
在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。
19.以下关于面向对象概念的描述中,不正确的一项是()
A.在现实生活中,对象是指客观世界的实体
B.程序中的对象就是现实生活中的对象
C.在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)
D.在程序中,对象是一组变量和相关方法的集合
解答:B
20..执行下列代码后,哪个结论是正确的 String[] s=new String[10];
A. s[9] 为 null;
B. s[10] 为 "";
C. s[0] 为 未定义
D. s.length 为 10
解答:AD
s 是引用类型,s 中的每一个成员都是引用类型,即 String 类型,String 类型默认的值为 null
s 数组的长度为 10。
21.属性的可见性有。(选择 3 项)
A.公有的
B.私有的
C.私有保护的
D.保护的
解答:ABD
属性的可见性有四种:公有的(public) 保护的(protected) 默认的 私有的(private)
22..在字符串前面加上_____符号,则字符串中的转义字符将不被处理。(选择 1 项)
@
A
\
B
#
C
D
%
解答:B
23.下列代码哪行会出错: (选择 1 项)
1) public void modify() {
2) int I, j, k;
3) I = 100;
4) while ( I > 0 ) {
5) j = I * 2;
6) System.out.println (" The value of j is " + j );
7) k = k + 1;
8) I--;
9) }
10) }
4
A.
6
7
8
B.
C.
D.
解答:C
k 没有初始化就使用了
24.对记录序列{314,298,508,123,486,145}按从小到大的顺序进行插入排序,经过两趟
排序后的
结果为:(选择 1 项)
{314,298,508,123,145,486}
{298,314,508,123,486,145}
{298,123,314,508,486,145}
{123、298,314,508,486,145}
A
B
C
D
解答:B
插入排序算法:
public static void injectionSort(int[] number) {
// 第一个元素作为一部分,对后面的部分进行循环
for (int j = 1; j < number.length; j++) {
int tmp = number[j];
int i = j - 1;
while (tmp < number[i]) {
number[i + 1] = number[i];
i--;
if (i == -1)
break;
}
number[i + 1] = tmp;
}
}
25.栈是一种。(选择 1 项)
A
存取受限的线性结构
B
存取不受限的线性结构
C
存取受限的非线性结构
D
存取不受限的非线性结构
解答:A
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。
26.下列哪些语句关于内存回收的说明是正确的。(选择 1 项)
A 程序员必须创建一个线程来释放内存
B 内存回收程序负责释放无用内存
C 内存回收程序允许程序员直接释放内存
D 内存回收程序可以在指定的时间释放内存对象
解答:B
垃圾收集器在一个 Java 程序中的执行是自动的,不能强制执行,即使程序员能明确地判断
出有一块内
存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员