1.访问修饰符java
当前类 同一个包 子类 其余包 算法
public ✔ ✔ ✔ ✔ide
protected ✔ ✔ ✔ ✘this
default ✔ ✔ ✘ ✘对象
private ✔ ✘ ✘ ✘继承
2.overload与override的区别:接口
重载overload表示同一个类中能够有多个名称相同的方法,但这些方法的参数列表各不相同;override则表示子类和父类的某个方法的名称和参数彻底相同,经过建立的实例对象调用该方法时,将调用子类中定义的方法,至关于把父类中的方法覆盖了。生命周期
3.抽象类和接口的区别内存
抽象类不能建立实例对象,抽象类中的方法没必要是抽象的,接口能够说成是抽象类的一种特例,接口中的全部方法都必须是抽象的。get
1.抽象类能够有构造方法,接口中不能有构造方法
2.抽象类能够有普通成员变量,接口中没有普通成员变量。
3.抽象类中包含非抽象的普通方法,接口中的全部方法必须都是抽象的,不能有非抽象的普通方法
4.抽象类中的抽象方法的访问类型public,protected;接口只能是public
5.抽象类中包含静态方法,接口中不能包含静态方法
6.抽象类和接口中均可以包含静态成员变量,抽象类中的静态成员变量的访问类型任意,接口中只能是public static final
4.内部类是一个类内部定义的类,内部类不能定义静态成员;匿名内部类必须继承其余类或实现其余接口
5. 多态是经过动态绑定实现的,就是在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
6.static,final
final变量:一旦被初始化,就没法改变它的值
final final方法:不容许子类覆盖
final类:不能被继承,由于类中的成员或成员方法没有机会被覆盖
static变量:被static修饰的变量,叫静态变量;
static static方法:静态方法能够直接经过类名调用,任何的实例也均可以调用,不能用this或super,不能访问实例变量和实例方法,只能访问所属类的静态成员变量和成员方法。
static代码块:static代码块也叫静态代码块,是在类中独立于类成员的static语句块,能够有多个,位置能够随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,若是static代码块有多个,JVM将按照它们在类中出现的前后顺序依次执行它们,每一个代码块只会被执行一次
7.JVM是加载class文件是经过ClassLoader和它的子类来实现的
8.java经过垃圾回收器来自动地把再也不被使用的存储空间释放掉。垃圾回收器主要有3个任务:分配内存,确保被引用对象的内存不被错误的回收以及回收再也不被引用的对象的空间。
9.复制回收算法:把堆分红两个大小相同的域,在任什么时候刻,只要其中的一个域被使用,直到这个区域被消耗完为止,此时垃圾回收器会中断程序的执行,经过遍历的方式把全部活动的对象复制到另外一个区域中,在复制的过程当中他们是紧挨着布置的,从而消除了内存碎片。缺点就是须要两倍的内存空间,代价很大。须要中断程序,下降了程序的执行效率。
10.按代回收:因为程序建立的大部分对象的生命周期都很短,只有一部分对象有较长的周期,所以:能够把堆分红两个或多个堆,每一个子堆视为一代,算法在运行过程当中优先收集那些年幼的对象,若是一个对象被屡次回收依然存活,那么就能够把这个对象转移到高一级的堆里,减小对其扫描的次数