一、饭前甜点
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.成员名”访问外部类成员