第三周测试总结分析

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 Mycode\week3\HelloWorld.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是书上页码,详情请看书)

posted @ 2019-04-11 13:19  20175218陈敬勇  阅读(456)  评论(0编辑  收藏  举报