java复习题

A、Outer o = new Outer(); o.method();

B、Inner I = new Inner(); i.method();

C、Outer.Inner oi = new Outer.Inner(); oi.method();

D、以上答案都不对 答案:C

29下列关于使用this调用构造方法的说法中,错误的是?( ) A.使用this调用构造方法的格式为this([参数1,参数2?]) B.只能在构造方法中使用this调用其它的构造方法 C.使用this调用其它构造方法的语句必须放在第一行

D.在一个类的两个构造方法中可以使用this互相调用 答案:D 30下列关于this的说法中,错误的是( )

A.只能在构造方法中使用this调用其它的构造方法,不能在成员方法中使用

B.在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次 C.this关键字可以用于区分成员变量与局部变量 D.this可以出现在任何方法中 答案:D

31在Java语言中,所有的类都直接或间接继承自【】类 答案:Object 32一个类如果实现一个接口,那么它就需要实现接口中定义的全部【】,否则该类就必须定义成【】 答案:方法,抽象类

33异常的捕获通常由try、catch两部分组成,【】代码块用来存放可能发生异常,【】代码块用来处理产生的异常 答案:try,catch

34在Java语言中,允许使用已存在的类作为基础创建新的类,这种技术我们称为【】 答案:继承

35当一个对象被当成垃圾从内存中释放时,它的【】方法会被自动调用。 答案: finalize() 36final修饰的方法,不能被子类【】 答案:重写 解析:final修饰的方法为最终方法,不能被重写

37final修饰的局部变量只能被赋值【】次 答案:一 解析:final最终变量,只能赋值一次

38RuntimeException类及其子类都是【】异常 答案:运行时 39自定义异常需要继承【】类 答案:Exception 解析:Exception是所有异常的超类

40构造方法没有返回值类型,因此不能使用【】语句。答案:return 41构造方法的名称必须和【】保持一致。 答案:类名

42如果在某一个方法中定义的局部变量与成员变量同名时,在该方法中通过变量名访问到的是【】。答案:局部变量 43类与对象的关系中,【】用于描述多个对象的共同特征,它是对象的模板。【】用于描述现实中的个体,它是类的实例。答案:类,对象

解析:类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例。

44请简述面向对象的三大特征。 答案:封装、继承、多态

面向对象的特点主要可以概括为封装性、继承性和多态性。

其中封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。

继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。

多态性指的是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。

45简述成员变量与局部变量的区别。 答案:1. 定义位置的区别:

1)成员变量是定义在方法之外类之内的变量,称作为成员变量(成员属性). 2)局部变量是定义在方法之内的变量。

2.生命周期的区别:

1)成员变量是随着对象的创建而存在,随着对象的消失而消失。

2)局部变量随着方法的调用执行到了创建局部变量的语句的时候存在,局部变量一旦出了自己的作用域马上从内存中消失。

3.存储位置的区别:

1)成员变量是存储于堆内存中的。 2)局部变量是存储于栈内存中的。 4. 初始值的区别:

1)成员变量有默认的初始值: int 0

double 0.0 float 0.0f; char ' ' String null boolean false

2)局部变量没有默认的初始值,要先初始化才能使用。

46请简述类与对象之间的关系。

答案:类是同一种类型对象的抽象,它用于描述一组对象的共同特征和行为。

面向对象的编程思想力图在程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出两个概念,即类和对象。其中,类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。 47请简要说明使用封装的好处。

答案:1.提高了数据的安全性。2.隐藏了实现细节。3.操作简单、方便。 49请阅读下面的程序,在空白处填写正确的代码,定义一个无参构造方法。 public class Person { public ____() {} }答案:Person 解析:在一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法,具体如下: 构造方法的定义需要同时满足三个条件,具体如下: 1:方法名与类名相同

2:在方法名的前面没有返回值类型的声明 3:在方法中不能使用return语句返回一个值 因此,只需在横线处填写Person即可。

50请简述构造方法的特点。

答案:1.构造方法名与类名相同2.在构造方法名的前面没有返回值类型的声明3.在构造方法中不能使用return语句返回一个值 51请简要说明什么是构造方法重载。

答案:与普通方法一样,构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。

52阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果并分析出现此结果的原因。否则请说明编译失败的原因。 class Cat{

void mi( ) throws NullPointerException{ System.out.println( \ } }

public class SmallCat extends Cat{ void mi( ) throws Exception{

System.out.println( \ }

public static void main( String[] a ) throws Exception{ Cat cat = new SmallCat(); cat.mi(); } } 答案:程序编译失败。在子类中,如果要覆盖父类的一个方法,而父类中的方法声明了throws异常,则子类的方法也可以抛出异常,但切记子类方法抛出的异常只能是父类方法抛出的异常的同类或子类,而不能是父类。

53在横线处填入正确的代码,可以让局部变量的age给成员变量的age赋值。 class Person { int age;

public Person(int age) {

______________//让局部变量的age给成员变量的age赋值 }

public int getAge() { return this.age; } } 答案:

this.age = age;

54阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果并分析出现此结果的原因。否则请说明编译失败的原因。 public class Example {

public static void main(String[] args) { try {

System.out.println(4 / 0);

System.out.println(\程序没有异常\

} catch (Exception e) {

System.out.println(\程序发生异常\ return; } finally {

System.out.println(\语句执行\ } } }

答案:程序发生异常 finally语句执行

解析:try语句中存放可能发生异常的语句,catch语句用于对异常进行处理,finally中的语句表示一定会被执行的语句。在进行4/0运算时,程序发生了除0异常,catch语句捕获异常执行并输出“程序发生异常”,此时在catch语句中还有一个return语句,但是这并不会影响finally语句的正常运行,程序仍然输出“finally语句执行”,除非在catch语句中执行System.exit(0);退出虚拟机,finally语句才不执行。 55简述抽象类和接口的区别?

答案:在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。

56阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。 public class Outer {

public String name=\ private class Inner {

String name=\ void showName(){

System.out.println(name); } }

public static void main(String[] args) {

Inner inner = new Outer().new Inner(); System.out.println(inner.name); } }

答案:程序能够编译通过,运行的结果为“inner” 57构造方法和普通的成员方法有什么区别?

答案:构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。 解析:

58阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。 public class Demo {

联系客服:779662525#qq.com(#替换为@)