一、重写与重载的区别:

1、重载:
java中允许同一个类文件出现多个方法名相同但是参数列表不同同名方法,这种现象称为重载。
要求两个方法名称必须相同,但是参数列表不能相同(个数不同,参数类型不同,参数类型出现顺序)

目的:让方法在接收不同参数实现不同功能

2、重写:
发生在继承过程中,子类对父类方法实现细节进行重新定义
1)重写方法时,子类不能降低方法访问权限,可以扩大访问权限
2)由private或则final修饰方法都不能被重写
3)重写方法时,抛出异常可以是父类方法抛出异常全集,子集,空集
4)重写方法返回值,可以缩小返回类型对象,不能扩大

二、throw与throws
throws:
1)声明位置:方法名之后
public void test1() throws NullPointerException{}
2)作用:通知开发人员当前方法在运行时,有可能抛出的异常
3)携带数据 :throws后面可以携带多个异常类型
4)调用:当一个方法被throws修饰时,调用方法时必须考虑异常捕捉问题

throw:
1)声明位置:方法执行体
public void test1(){
throw new RuntimeExeption();
}
2)作用:throw是一个命令,执行时抛出一个指定异常
3)调用时可以不考虑异常捕捉问题

三、接口与抽象类区别
接口:
1)是一种特殊类文件
2)作用:定义规则、降低耦合度
3)使用规则:
1)接口中属性,默认都是静态常量属性
2)接口中方法都是抽象,如果需要定义具体方法是实现,此时方法需要使用default修饰
3)接口中方法访问权限不能是private
4) 接口与接口之间可以实现多继承,但是接口之间不能相互实现
5)接口中不存在构造方法,不能被实例化

抽象类:
1)抽象类由abstract修饰
2)抽象类作用降低接口实现类与接口之间实现难度
3)使用规则:
抽象类可以声明抽象方法,也可以生成具体方法
抽象类声明抽象方法必须由子类进行重写
抽象类实现接口时,不需要对接口方法进行重写
抽象类有构造方法,但是不能使用

四、JRE和JDK区别
JRE:是java程序的运行时环境,包括jvm和运行时所需要的核心类库;
JDK:是java程序开发程序包,包括JRE和开发人员使用的工具;
我们想要运行一个已有的java程序,只需要安装JRE即可
我们想要开发一个全新的java程序,那必须安装JDK

五、数组与链表
数组是具有相同的数据类型且按一定次序排列的一组变量的集合体,数组在内存中的地址是连续的(链表内存地址是散列、不连续的)。数组是一种引用数据类型,数组元素类似对象的成员变量。链表通过指针连接元素,分为单向链表、双向链表和循环链表。数组静态分配内存,链表动态分配内存。数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。

数组的优点
随机访问性强(通过下标进行快速定位)
查找速度快
数组的缺点
插入和删除效率低(插入和删除需要移动数据)
可能浪费内存(因为是连续的,所以每次申请数组之前必须规定数组的大小,如果大小不合理,则可能会浪费内存)
内存空间要求高,必须有足够的连续内存空间。
数组大小固定,不能动态拓展
链表的优点
插入删除速度快(因为有next指针指向其下一个节点,通过改变指针的指向可以方便的增加删除元素)
内存利用率高,不会浪费内存(可以使用内存中细小的不连续空间(大于node节点的大小),并且在需要空间的时候才创建空间)大小没有固定,拓展很灵活。
链表的缺点
不能随机查找,必须从第一个开始遍历,查找效率低。