1、hashTable和HashMap的区别
1) hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2) hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
3) hashMap允许空键值,而hashTable不允许。
2、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
3、给我一个你最常见到的runtime exception
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException
ImagingOpException, IndexOutOfBoundsExceptio
4、error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
5、List, Set, Map是否继承自Collection接口?
List,Set是
Map不是,Map继承了Object类
6、抽象类和接口的异同点?
定义:
声明方法而不去实现它的类就叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,
但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向
具体子类的一个实例。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有
方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该
实现类不能从接口定义中继承行为。
相同点:
-
他们都不能生成实例,都有抽象方法
-
接口是特殊的抽象类
-
接口继承接口和抽象类继承类都使用的关键字是extends
类继承类和接口
public class Apple extends Fruit implements Fruit1, Fruit2{}
接口可以多继承
public interface Fruit1 extends Fruit {}
不同点:
-
名字不同, 接口是interface,抽象类是abstract class
-
接口里面全部都是抽象 方 法,接口中的方法默认都是public abstract类型的;抽象类里面可以有抽象方法也可以有其他的方法
-
接口的 属性都是静态的,但是抽象类的属性可以是任意的
-
抽象类中可以有 构造器,但是接口中除了抽象方法什么都没有
-
接口的定义的变量默认是public static final型,且必须给其赋初始值。所以在实现类中不能重新定义,也不能改变其值。而在抽象类中其值可以重新定义也可以重新赋值
-
从继承的角度看,接口可以多继承,但是抽象类却不能,它只能继承一个父类,不能继承多个父类。