Java面试2

来源:互联网 发布:ubuntu ftp服务器配置 编辑:程序博客网 时间:2024/05/16 18:12

一、饭前甜点

1.赋值语句赋给目标的是值还是引用?

如果是基本类型则赋的是值本身,引用类型则赋的是引用地址

二、继承和多态

1.类的继承是谁继承谁?

是子类继承了父类,子类也称为派生类,父类也称为超类或基类

2.子类继承了父类的什么东西?

子类可以继承父类的数据域(属性),方法,但构造器不能继承

3.私有成员能被子类继承吗?

能继承,但是由于访问权限的控制,在子类中不能直接使用父类的私有成员

4.Object是什么类?

这个所有类的根类,任何类如果没有写显式的继承语句,默认都是直接继承Object类的

5.java中是单继承还是多继承?

是单继承,一个子类只能有一个父类

6.访问权限修饰符有几种,访问的范围又是多大?

有四种:

private:私用
只能在被类中被访问

default:默认
只能被同一个包中的类访问

protected:受保护的
只能被同一个包中的类和不同包中的子类访问

public:公有
可以被任何类访问

7.覆盖方法的规则有哪些?

子类覆盖方法和父类被覆盖方法的方法返回类型,方法名称,参数列表必须相同

子类覆盖方法的访问权限必须大于等于父类的方法的访问权限

方法覆盖只能存在于子类和父类之间

子类覆盖方法不能比父类被覆盖方法抛出更多异常

8.参数列表是否相同从哪几方面看?

从三方面看:参数个数,类型和顺序,需要注意的是参数的名字不相同是无所谓的

9.覆盖方法的规则有哪些?

方法名相同

方法的参数类型,个数,顺序至少有一项不同

方法的返回类型和修饰符均不受限制

10.可变长参数的声明格式是什么?实际上是什么类型的?

类型 … 变量,实际上是一个一维数组

11.this和super是作什么用处的?

this:本身代表当前的对象引用,可以用this.成员名称调用当前对象的属性和方法,如果属性和局部变量重名,可以用this.属性名和局部变量区分开。也可以用this()语法调用本类重载构造器。

super:本事是一个特殊关键字,可以用super.成员名称调用从父类继承的属性和方法,也可以用super()语法调用父类构造器。

12.super代表子类中的父类对象引用吗?

不,这个错误的说法,super不代表任何对象引用,仅仅是一个关键字

13.什么时候子类构造器会自动调用父类无参构造器?

当子类构造器中没有任何显式构造器调用的时候,即既没有this()调用也没有super()调用的时候

14.一个父类类型的引用变量可以引用一个子类的实例吗?

可以,这个引用变量是一个多态对象

15.多态对象有什么特点?

多态对象只能使用父类的成员,但如果多态对象使用了被子类覆盖的方法,则会动态绑定使用子类的成员,称为虚拟方法调用

16.引用类型之间的类型转换需要遵循哪些规则?

自动转换:从子类到父类的类型可以自动转换

强制转换:从父类到子类的类型要强制转换

无继承关系的类型转换是非法的

17.instanceof操作符是作什么用处的?

可以判断一个对象的类型是否是某一个类的类型或子类,也可以判断这个对象的类型是否是一个接口的实现类

18.toString方法什么时候会自动被调用?

在打印语句中传入引用类型的对象或者对象和字符串作连接时

19.默认的equals方法实现的是比较内容还是比较引用地址?

在Object中是比较引用地址。

20.覆盖equals方法和hashCode方法有什么规则?

必须保证当两个对象equals比较为true的时候,返回的hashCode相同,当比较为false的时候,返回的hashCode不同

21.java中有几个包装类?

有8个包装类,正好对应8种基本数据类型。

分别是:Boolean Byte Short Integer Long Character Float Double

三、修饰符及

1.装箱和拆箱分别是什么意思?

装箱指的是把基本类型包装成包装类的引用类型

拆箱指的是把包装类形式的引用类型转换为基本类型

例如:

Integer objInt = new Integer(10);//装箱

int i =objInt.intValue();    //拆箱

2.JDK1.4和1.5的装箱和拆箱有什么区别?

自动拆装箱,例如:

Integer intObj = 10;//自动装箱

int i = intObj + 5;//自动拆箱

3.final修饰符如何使用,使用了final修饰符有什么特点?

final修饰符可以修饰类,方法,变量

final类为最终类,不能被子类继承

final方法为最终方法,不能被子类覆盖

final变量为常量,只能赋一次值

4.abstract修饰符如何使用,使用了abstract修饰符有什么特点?

abstract修饰符可以修饰类和方法

abstract类为抽象类,是不能创建对象的

abstract方法为抽象方法,只有方法的声明,没有具体的实现

需要注意的是:

有抽象方法的类一定是抽象类

抽象类不一定有抽象方法

抽象类也有构造器,但不能创建对象实例

5.abstract不能和哪些修饰符配合使用?

不能和private,static,final一起使用

6.可以在非抽象方法中调用抽象方法吗?

可以,模板方法设计模式就是典型的这种调用

四、泛型程序设计

1.泛型的特点是什么?

主要特点是类型参数化,后期绑定数据类型

2.泛型支持基本类型吗?

不支持,只支持引用类型

3.如果没有传入类型参数,默认是什么类型?

默认是Object类型

4.泛型方法有什么特点?

将泛型参数声明在方法中,调用方法的时候绑定泛型

5.泛型类声明泛型参数的时候,<T extends A类型>表示什么意思?

表示绑定的类型必须是A类型或者是A类型的子类或实现类

五、接口和内部类

1.声明一个接口的关键字是什么?

interface关键字

2.接口中的成员有什么特点?

数据域必须是(public static final修饰)公有静态常量

方法必须是(public abstract修饰)公有抽象

没有构造方法

3.接口能创建对象实例吗?

不能,接口没有构造器,不能创建对象

4.接口和类的关系?

接口和类之间是实现关系,一个类用implements语句实现了某接口,这个类被称为接口的实现类,一个类可以实现多个接口,一个类实现了某接口,必须覆盖这个接口中的所有方法,否则这个类必须是个抽象类

5.接口和接口的关系?

接口和接口之间是继承关系,一个接口用extends继承另外一个接口,称为这个接口的子接口。

一个接口可以继承多个父接口

6.内部类如何定义?

一个类声明在另一个类的里面,这个类就被称为内部类,而外面的类被称为外部类

7.内部类可以分成几种?

实例内部类:声明在方法外边没有static修饰符

静态内部类:声明在方法外边有static修饰符

局部内部类:声明在方法里边

8.如何创建实例内部类的对象实例?

需要用外部类的对象来创建

例如:

class A {    

        class B {

        

        }    

}

如果想创建B类的实例,则必须用以下语句:

A a =new A();

A.B b = a.new B();

9.如何在实例内部类中访问外部类的成员?

在实例内部类中可以直接使用外部类的成员,不需要创建外部类的对象实例,但是如果在内部类中的成员名称屏蔽隐藏了外部类的成员(即外部类和内部类的成员名相同),则需要用”外部类名.this.成员名”访问外部类成员


0 0
原创粉丝点击