Java基础
1、java中的8种基本数据类型有哪些,分别占几个字节
java提供了八大基本数据类型整型:byte(8字节),short(16字节),int(32字节),long(64字
节),浮点型:float(32字节),double(64字节),字符型:char(16字节),布尔型:
boolean(1比特),每个基本数据类型都有其对应的保证类型分别时:Byte,Short,Integer,
Long,Float,Double,Charactor,Boolean。
基本数据类型和其对应的引用类型可以通过装箱(例如Integer.valueOf)和拆箱(i.intValue())完成。
对于装箱java提供了一个缓存池来避免反复创建相同的对象(例如Integer.valueOf(2),首先会判断缓存
池中是否存在值为2的Ingeter对象,若有则直接返回,若没有再新建)。同时基本类型之间允许低精度
对象向高精度对象转化,但是不能反过来。
2、接口和抽象类的区别
相同点:
两者都不能实例化;
可以拥有抽象方法。
区别:
1、抽象类定义的关键字是abstract class,接口定义的关键字是interface;
2、属性上,抽象类可以有静态变量、常量和成员变量,接口只能有常量;
3、抽象方法可以有普通方法,而接口jdk1.8之前只能有抽像方法(1.8之后,增加了静态方法和默
认方法);
4、抽象方法可以有构造方法,接口不可以有构造方法。
5、一个类只能单继承一个父类,而一个接口可以继承多个父接口,同时,一个类可以实现多个接
口却没有实现多个父类这一说法;
6、抽象方法在业务编程上更像一个模板,有自己的功能,同时也可以有优化补充的多种形式,而
接口更像是一种规范和要求,实现就要按照要求来进行。
3、ArrayList和LinkedList的区别
1.ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。
2.对于随机访问ArrayList要优于LinkedList,ArrayList可以根据下标对元素进行随机访问,而
LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起
3.对于插入和删除操作,LinkedList要优于ArrayList,因为当元素被添加到LinkedList任意位置的时
候,不需要像ArrayList那样重新计算大小或者是更新索引。
4.LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个
指向前一个元素,一个指向后一个元素。
4、final、finalize和finally的区别
final修饰变量,变量在初始化以后不能被修改
final修饰方法,方法不能被子类重写
final修饰类,类不能被继承
finalize方法:当一个对象是不可达对象的时候,GC会在某一个不确定的时候回收该对象,
在回收该对象之前,JVM会调用该对象finalize方法以释放该对象占用的其他资源,不建议