Java程序设计基础习题答案

(4)类A的对象实例中,存在一个名字为value2的成员变量 参考答案:(3)为正确参考答案。

7. 在如下源代码文件Test.java中, 哪个是正确的类定义?

(1)public class test {

public int x = 0; public test(int x) { this.x = x; } }

(2)public class Test{

public int x=0; public Test(int x) {

this.x = x; } }

(3)public class Test extends T1, T2 {

public int x = 0; public Test (int x) {

this.x = x; } }

(4)protected class Test extends T2{

public int x=0; public Test(int x){

this.x=x; } }

参考答案:(2)为正确参考答案。

8. 描述静态代码块、非静态代码块与构造函数的执行顺序。 参考答案:(静态代码块?非静态代码块?构造方法)。

9. 请用代码实现一个计算方法calc(),该方法接受两个参数,返回值为两个参数的和,并且返回值类型与传入的参数类型一致,例如:calc(3, 5)返回8,calc(3.0, 5.3)返回8.3。 参考答案:

(这里不考虑类型判断和溢出等问题,使用方法重载或者泛型实现) (1)public int calc(int num1, int num2) {

return num1+num2; }

public double calc(double num1, double num2) { return num1+num2; }

(2)public T calc(T num1, T num2) { return num1+num2; }

10. 简述Java中this和super的用法。 参考答案:

在Java中有两个非常特殊的变量:this和 super,这两个变量在使用前都是不需要声明的。this变量使用在成员函数的内部,指向当前对象。super变量直接指向超类的构造函数,用来引用超类中的变量和方法。this指代当前类的构造方法,super指代父类的构造方法。

第7章

1. \的返回结果是:

(1)\ (2)true

(3)false (4)String

参考答案:(2)为正确项。

2. 阅读下面代码:

public class Foo {

public static void main (String [] args) {

int i = 0;

addTow(i++);

System.out.println(i); }

static void addTow(int i) {

i += 2; }

}

上述代码的执行结果是:

(1)0 (2)1 (3)2 (4)3

参考答案:(2)为正确项。

3. 阅读下面代码

public class ThisUse {

int plane; static int car;

public void doSomething() {

int i;

//插入语句 }

}

下面哪个选项中的内容不能添加到//插入语句处(添加后导致编译错误)

(1)i=this.plane; (2)i=this.car; (3)this.car=plane; (4)this.i=4;

参考答案:(4)不能添加到//插入语句处。

4. 下列选项中哪一个说法是错误的?

(1)实例方法可以直接访问静态变量和静态方法 (2)静态方法可以直接访问静态变量和静态方法 (3)静态方法可以直接访问实例变量和实例方法 (4)静态方法中不能使用this和super 参考答案:(3)选项说法是错误。

5. 关于静态变量的创建,哪一个选项的说法是正确的?

(1)一旦一个静态变量被分配,它就不允许改变

(2)一个静态变量在一个方法中被创建,它在被调用的时候值保持不变 (3)通常情况下、在任意多个类的实例中,一个静态变量的实例只存在一个

(4)一个静态标识符只能被应用于原始类型变量 参考答案:(3)正确选项。

6. 下列哪一种叙述是正确的?

(1)abstract修饰符可修饰字段、方法和类

(2)抽象方法的body部分必须用一对大括号{ }包住 (3)声明抽象方法,大括号可有可无 (4)声明抽象方法不可写出大括号

参考答案:(4)为正确项。解析:抽象方法的定义:只有方法的声明,没有方法的实现,即没有方法体。

7. 阅读下面代码:

1: interface Foo { 2: int k = 0; 3: } 4:

5: public class Test implements Foo { 6: public static void main(String args[]) { 7: int i; 8: Test test = new Test(); 9: i= test.k;

10: i= Test.k; 11: i= Foo.k; 12: } 13: }

下面关于执行结果的说法哪一个是正确的? (1)第2行编译失败 (2)第9行编译失败 (3)第10行编译失败 (4)编译成功

参考答案:(4)为正确项。

8. 阅读下面代码:

class A{

void test1(){

hi(); }

private void hi(){

System.out.println(\} }

class AA extends A{

void hi(){

System.out.println(\} }

public class test{

public static void main(String b[]) throws Exception{

A a = new AA(); a.test1(); } }

下面关于上述代码的说法哪一个是正确的? (1)编译失败 (2)编译通过,执行结果是:say hi,a (3)编译通过,执行结果是:say hi,aa (4)编译通过,运行时发生错误 参考答案:(2)为正确项。

10. 简述Java中有几种内部类?(根据自己的理解,简答即可)

参考答案:

(1)静态嵌套类:是个封闭式顶层类或接口的static(静态)成员。这样的类在Java中作为顶层类。

(2)成员内部类:是一种非静态内部类,它不是顶层类。作为包含它的类的全部成员,成员类可以访问包含它的类的属性和方法,甚至private修饰的变

量和方法。正如类的其他实例变量和方法一样,一个成员内部类的所有实例都与包含它的类的一个实例相关。

(3)方法和作用域中的内部类(局部类):是一个内部类,定义在一个Java代码块内,比如说定义在一个方法或循环主体内。局部类具有局部作用域,仅使用在定义它的代码块内。局部类可以访问包含它的类的方法和变量。

(4)匿名内部类:是一种其定义和使用被组合到单一表达式中的方法和作用域中的内部类。其定义和使用都在一个表达式中完成,而不是在一条语句中定义,在另一条语句中使用。匿名内部类只使用一次,故不包含构造方法。

11. Java中包装类的作用是什么?

参考答案:在Java中不能定义基本类型的类,为了能将基本类型视为对象来处理,并能操作相关的方法,Java为每个基本类型都提供了包装类。这样,便可以把这些基本类型转化为对象来处理了。

12. Java中final修饰的类、方法、变量各有什么特点? 参考答案: (1)final类

final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。 (2)final方法

如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。

使用final方法的原因有二:

第一、把方法锁定,防止任何继承类修改它的意义和实现。

第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

(3)final变量(常量)

用final修饰的成员变量表示常量,值一旦给定就无法改变!

final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。

13. 简述Java中反射的作用。

参考答案:Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

14. 简述Java接口的特点,和抽象类的区别。 参考答案:

接口的特点:

(1)所有属性都是用public、static、final修饰。

(2)所有方法都是用public修饰,方法没有方法体。 (3)不允许有静态方法。 (4)接口可以继承多个接口。 和抽象类的区别:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4