1.jdk1.8前后,接口有什么不同?
答:jdk1.8之前,接口只能定义抽象方法和静态常量,
jdk1.8之后接口不进能定义抽象方法和静态常量,还可以定义默认方法和静态方法,默认方法使用default关键字来修饰。
2.接口和抽象类有什么不同?
答:1.定义方式不同,接口使用interface关键字来定义,抽象类使用abstract关键字来定义
2.实现方式不同,一个类可以实现多个接口,但是只能继承一个抽象类
3.构造方法不同,接口不能定义构造方法,抽象类可以定义构造方法
4.成员变量不同,接口中的属性默认为常量被public static final修饰,抽象类可以包含各种类型的字段。
5.成员方法不同,接口中的方法都是抽象方法,而抽象类什么方法都可以定义
6.多继承,接口可以多继承,抽象类单继承
7.定义接口和抽象类目的不同
接口主要用于定义规范和实现多态,而抽象类主要用于封装共同的属性和行为,作为父类供继承。
3.==和equals的区别
答:1.==是关系运算符,equals是一个实例方法
2.==既可以比较基本类型的变量,也可以比较引用类型的变量,而equals只能比较引用类型的变量
3.==比较基本类型的变量比较的是数值,比较引用类型的变量比较的是地址,如果不重写equals方法则默认调用object类的equals方法,该类的equals方法实质是就是用==比较两个对象的地址。
4.hashcode和equals方法的默认实现是什么?
答:1.hashcode和equals都是Object类的实例方法
2.hashcode方法,底层是使用c/c++实现的,用于获取内存地址,基于内存地址生成int类型的哈希值
3.equals方法,是使用==来比较两个对象的地址值是否相等
5.重载和重写的区别?
答:1.定义不同,重载是在一个类中,定义多个方法名相同,形参列表不同的方法,形参列表不同表现在,形参的个数、顺序、参数类型。重写是子类重现实现父类中已有的方法,方法名和形参列表必须相同。
2.特点不同,重载方法可以具有多个不同的参数类型、,重写方法的修饰符的只能和父类相同或者更宽,并且被private修饰方法不能被重写,返回值类型如果是基本类型需要保持一致,如果是引用类型则即可以与父类保持一致也可以是父类的子类,如果父类方法声明了异常,子类可以声明也不声明,如果要声明则该异常应与父类保持一致或者是父类异常的子类。
3.目的不同,重载是为了方便调用者调用,而重写是为了实现多态。
6.Java中的数据类型都有哪些?
答:Java中的数据类型分为两大类,一类是基本数据类型,一类是引用数据类型
基本数据类型分为四类八种
4类为字符型、整形、浮点型、布尔型
8种为char、byte、short、int、long、float、double、boolean
引用数据类型有数组、类、接口、枚举、注解