栈的溢出:

---------------------------------

1、死循环是不会造成栈的溢出的。

2、递归调用才会造成栈的溢出。


堆内存

-----------------------------------

1、默认是物理内存的四分之一

2、内存溢出一般指堆内存溢出。

3、查看java进程id使用jps

4、查看指定java进程的堆内存信息使用:jmap -heap pid

5、java -Xmx5g HeapDemo //设置最大堆内存。

       -Xms1g //设置初始堆大小。

6、查看java内存的工具jvisualvm


静态代码块static

--------------------------------------

    1、用static关键字修饰

    2、在类的加载过程中只执行一次

    3、可以手动控制是否在类的加载时执行。Class.forName(className,boolean,ClassLoader)。第二个参数默认为true,设置成false时就是不加载。

    4

类的继承

-----------------------------------

    1、把共性的内容提取到超类中,提高重用性。

    2、类只能单重继承,不能多重继承。

    3、this指向自身

    4、super指向父类。

    5、子类重写的方法权限要大于等于父类方法权限

    6、构造函数默认会在方法内的首行添加super();调用父类的构造函数。

    7、调用本类的构造函数用this(...);

final

-----------------------------------

    1、final修饰类的时候,表示该类不能被继承、

    2、final修饰方法的时候,表示该方法不能被重写

    3、私有的方法可以加final,编译可以通过,但没有意义。

    4、final修饰变量,则变成常量,只能在申明时被赋值,其它地方不能再赋值。

abstract(抽象的)

--------------------------------------

    1、abstract修饰类为抽象类,修饰方法为抽象方法。

    2、抽象方法必须在抽象类中,抽象类可以不有抽象方法。

    3、抽象类不可以被实例化,即不可以new创建对象。

    4、

interface(接口)

------------------------------------

    1、接口中的所有方法都是抽象的。

    2、属性有固定的修饰符

    3、接口之间可以多重继承。

    4、接口与类之间是实现关系。

    5、面向接口编程是降低程序间的耦合度。