1、使用汇编语言编写指令时,用一些简单的容易记忆的符号来代替二进制指令,比机器语言更为方便,属于高级语言。
A .true
B .false
答案:B
解析:P50。机器语言、汇编语言属于低级语言。
2、下列说法正确的是
A .使用C语言编写代码指令时,不需要考虑机器指令的细节。
B .源文件是按照编程语言的语法编写具有一定扩展名的文本文件。
C .面向对象语言编写的程序需要消耗更多的内存,需要更快的CPU来保证其运行速度。
D .代码块是程序执行时产生的一种行为,但是面向过程语言却没有为这种行为指定“主体”,即对象。
答案:ABCD
解析:P50-51。
3、下列关于面向对象编程的特点的叙述,错误的是
A .面向对象编程的三个特点为:封装、继承、多态。
B .只能对一个类中的方法进行封装,不能对其属性进行封装。
C .子类继承父类,可以添加子类独有的数据和数据上的操作。
D .在 OOP中,继承的概念很好的支持了代码的重用性(reusability)。
答案:B
解析:P51-52。
4、类体的内容由下列哪几部分组成
A .声明变量
B .定义方法
C .导入相关的包
D .定义其他所需的类
答案:AB
解析:P53
5、对于P53代码,如果定义了一个Lader类的对象,则其具有computerArea()和setHeight()两个行为。
A .true
B .false
答案:A
6、下列说法正确的是
A .成员变量的数据类型可以是Java中的任何一种数据类型。
B .成员变量和局部变量的有效范围为整个类。
C .方法返回的数据的类型可以是Java中的任何一种数据类型。
D .方法体内可以对成员变量和方法体中声明的局部变量进行操作。
答案:ACD
解析:P54-55。
7、如果局部变量与成员变量的名字相同,则局部变量被隐藏。
A .true
B .false
答案:B
解析:P56。
8、下列说法正确的是
A .如果想在方法中使用被隐藏的成员变量,可以使用关键字super。
B .double类型的成员变量的默认值为0,局部变量没有默认值。
C .对成员变量的赋值操作只能放在方法中。
D .面向对象语言中的“类”相当于C语言中的“函数”。
答案:C
解析:P55-57。A项:应使用关键字this。B项:double类型的成员变量的默认值为0.0。D项:面向对象语言中的“方法”相当于C语言中的“函数”。
9、下列关于UML类图的说法,正确的是
A .抽象类和抽象方法一般用斜体表示。
B .一般情况下,方法的属性用+表示private,用-表示public。
C .在UML 里,一个类的属性能显示它的名字,类型,初始化值。
D .继承用一个带三角的直线表示,由父类指向子类。
答案:AC
解析:B项:用+表示public,用-表示private。D项:由子类指向父类。
10、下列说法错误的是
A .类是面向对象语言中最重要的一种数据类型,可以用类来声明变量。
B .在用类声明对象后,还必须创建对象。
C .用类声明的变量称为该类的一个全局变量。
D .类是创建对象的模板,没有类就没有对象。
答案:C
解析:P57-58。用类声明的变量称为对象。
11、下列关于构造方法的叙述,正确的是
A .当程序用类创建对象时,需使用它的构造方法。
B .类中的构造方法的名字必须与该类的名字完全相同,而且没有类型。
C .如果类中定义一个或多个构造方法,则默认为无参数的构造方法。
D .带有返回值的方法一定不是构造方法。
E .允许在一个类中编写若干个构造方法,但参数必须不同。
答案:ABDE
解析:P58 4.3.1节。C项:C.如果类中定义一个或多个构造方法,则Java不提供默认的构造方法。
12、下列关于创建对象的说法,错误的是
A .创建一个对象包括对象的声明和为对象分配变量两个步骤。
B .使用Student stu;声明对象变量后,stu的内存中还没有任何数据。
C .引用型成员变量的默认初值为0。
D .对象的引用存在堆中,对象的实体(分配给对象的变量)存在栈中。
E .String a="ab"+"cd";创建了3个对象。
答案:CD
解析:4.3.2节。C项:引用型成员变量的默认初值为null。D项:对象的引用存在栈中,对象的实体(分配给对象的变量)存在堆中。
13、下列关于对象的叙述,正确的是
A .通过使用运算符“.”,对象可以实现对自己的变量的访问和方法的调用。
B .当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量。
C .使用空对象会抛出UnknownTypeException异常。
D .对于同一个类的两个对象obj1和obj2,若进行obj1=obj2操作,则obj1和obj2拥有同一个实体。
E .即使一个类声明的两个对象具有相同的引用,其实体也不一定完全相同。
答案:ABD
解析:4.3.3节、4.3.4节。C项:NullPointerException异常。E项:若引用相同,则具有完全相同的实体。
14、关于类的叙述,正确的是
A .Java程序以类中的方法为“基本单位”。
B .每个源文件都是一个独立的编译单位。
C .与类所在源文件名称相同的类,称为主类。
D .使用“javac Example4_5.java”编译P67的Example4_5.java时,自动编译了Rect.java和Lader.java。
E .可以使用“javac *.java”编译P67该目录下的所有Java文件。
答案:BDE
解析:4.4节。A项:以类为基本单位。C项:含有main方法的类称为主类。
15、下列关于参数传值的说法,错误的是
A .对象调用方法时,参数变量必须有具体的值。
B .方法如果改变参数的值,向参数传值的变量的值也会改变。
C .可以向int型变量传递一个short值。
D .如果改变参数变量所引用的实体,原变量的实体会发生同样的变化。
E .对于可变参数,如一个参数代表x,那么x.length等于x所代表的参数的个数。
答案:B
解析:4.5节。方法如果改变参数的值,不会影响向参数“传值”的变量的值。
16、下列关于P72例子8的叙述,错误的是
A .圆对象委托圆锥对象调用其方法setBottom(),然后圆锥对象再计算出自身的体积。
B .执行Example4_8.java的“circular.setBottom(cicle);”一句,将circle对象的引用传递给circular对象的bottom。
C .执行Example4_8.java的“circle.setRadius(50)”一句,bottom的实体和circle的实体发生一样的变化。
D .执行Example4_8.java的“circle = new Circle(1000)”一句,circle对象有了不同于bottom的实体。
答案:A
解析:P72-75。A项:圆锥对象委托圆对象调用getArea()方法计算底的面积。
17、下列关于实例变量和类变量的说法,错误的是
A .在声明成员变量时,用关键字static修饰的称作类变量,否则称为实例变量。
B .分配给不同对象的类变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量。
C .创建类的对象时,类变量不再重新分配内存。
D .类变量不仅可以通过某个对象访问,也可以直接通过类名访问。
答案:B
解析:P77-78。B项:这是对“实例变量”的描述,而非“类变量”。
18、下列关于实例方法和类方法的叙述,正确的是
A .类方法不可以操作实例变量,因为在类创建对象之前,实例成员变量还没有分配内存。
B .当创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址。
C .实例方法不能通过类名调用,只能由对象来调用。
D .不必创建对象就可以用类名直接调用static方法。
答案:ABCD
解析:P79-80。
19、以下对重载描述错误的是
A .方法重载只能发生在一个类的内部。
B .构造方法不能重载。
C .重载要求方法名相同,参数列表不同。
D .方法的返回值类型不是区分方法重载的条件。
答案:B
20、下列说法正确的是
A .在一个类的内部可以直接调用本类的对象,也可以使用关键字this来调用。
B .构造方法中使用this时,可以省略this,即将this.method()直接写成method()。
C .this不能出现在类方法中。
D .当实例成员变量的名字和局部变量的名字相同时,可以省略成员变量前的“this.”和static变量前的“类名.”。
答案:ABC
解析:4.9节。D项:当实例成员变量的名字和局部变量的名字相同时,不能省略成员变量前的“this.”和static变量前的“类名.”。
21、在E:中使用“javac Mycodeweek3HelloWorld.java”编译HelloWorld.java,编译通过后在E:目录中产生字节码文件。
A .true
B .false
答案:B
22、下列说法正确的是
A .println()方法属于java.lang.,但由于其非常常用,编译器自动添加了java.lang.,因此使用println()方法时不需要import。
B .如果一个文件中有class的定义、import、package,则其先后顺序为import、package、class。
C .可以使用import java.*;将类库中的所有的类都包含进去。
D .java.math提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
答案:AD
解析:B项:先后顺序为package、import、class。C项:不可以太过简单,起码要标注包的名称。D项:见API文档介绍。
23、访问修饰符作用范围由大到小排序正确的是
A .private-protected-public
B .public-private-protected
C .private-public-protected
D .public-protected-private
答案:D
24、下列关于访问权限的叙述,正确的是
A .类方法总是可以操作该类中的类变量,与访问限制符无关。
B .当在其他类中创建一个该类的对象时,该对象不能访问自己的私有变量。
C .public、protected、private均可以用来修饰类。
D .如果源文件使用import语句引入另一个包的类,并创建了一个该类的对象,那么该类的这个对象不能访问自己的友好变量和友好方法。
答案:ABD
解析:4.12节。不能用protected和private修饰类。
25、下列代码的执行结果均为true。
int i = 128;
Integer i2 = 128;
Integer i3 = new Integer(128);
System.out.println(i == i2);
System.out.println(i == i3);
A .true
B .false
答案:A
解析:Integer类型的对象包含一个int类型的字段,Integer会自动拆箱为int,因此值相等。
26、下列说法正确的是
A .Java应用程序由若干个类所构成,这些类必须在一个源文件中。
B .Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。
C .Java源文件必须含有主类。
D .Java源文件如果含有主类,主类必须是public类。
答案:B
27、下列说法正确的是
A .成员变量的名字不可以和局部变量的相同。
B .方法的参数的名字可以和方法中声明的局部变量的名字相同。
C .成员变量没有默认值。
D .局部变量没有默认值。
答案:D
28、关于下列Hello类的叙述,正确的是
class Hello {
Hello(int m){
}
int Hello() {
return 20;
}
hello() {
}
}
A .Hello类有2个构造方法。
B .Hello类的int Hello()方法是错误的方法。
C .Hello类没有构造方法。
D .Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。
答案:D
29、关于下列Dog类的叙述,错误的是
class Dog {
Dog(int m){
}
Dog(double m){
}
int Dog(int m){
return 23;
}
void Dog(double m){
}
}
A .Dog(int m)与Dog(double m)互为重载的构造方法。
B .int Dog(int m)与void Dog(double m)互为重载的非构造方法。
C .Dog类只有两个构造方法,而且没有无参数的构造方法。
D .Dog类有3个构造方法。
答案:D
30、下列A类中【代码1】~【代码5】哪些是错误的?
class Tom {
private int x = 120;
protected int y = 20;
int z = 11;
private void f() {
x = 200;
System.out.println(x);
}
void g() {
x = 200;
System.out.println(x);
}
}
public class A {
public static void main(String args[]) {
Tom tom = new Tom();
tom.x = 22; //【代码1】
tom.y = 33; //【代码2】
tom.z = 55; //【代码3】
tom.f(); //【代码4】
tom.g(); //【代码5】
}
}
A .【代码1】
B .【代码2】
C .【代码3】
D .【代码4】
E .【代码5】
答案:AD
31、下列E类的类体中哪些【代码】是错误的。
class E {
int x; //【代码1】
long y = x; //【代码2】
public void f(int n) {
int m; //【代码3】
int t = n+m; //【代码4】
}
}
A .【代码1】
B .【代码2】
C .【代码3】
D .【代码4】
答案:D
(说明:P是书上页码,详情请看书)