虚拟机运行期间内存分配
程序计数器:
当前线程所执行的行号指示器。通过改变计数器的值来确定下一条指令,比如循环,分支,跳转,异常处理,线程恢复等都是依赖计数器来完成
JAVA虚拟机栈:
它是和线程关联在一起的。每当创建一个线程,JVM就会为这个线程创建一个对应的Java栈。一个Java栈会包含有多个栈1帧(Frames),这些栈帧是与Java方法关联的,每运行一个Java方法,就创建一个栈帧
堆:
通过new生成的对象都存放在堆中,对于堆中的对象生命周期的管理由Java虚拟机的垃圾回收机制GC进行回收和统一管理
方法区:
方法区,用于存储类结构信息。常量池,静态变量,方法数据,方法体。构造函数,包括类中的专用方法,实例初始化,接口初始化都存储在这个区域,静态变量在JDK1.8以后,存放在堆空间中
本地方法栈:
是为JVM运行Native方法准备的空间。Java通过Java本地接口JNI(Java Native Interface)来调用其他语言编写的程序
注释有三种
//单行注释
/* */多行注释
/** */文档注释
其中单行注释和多行注释主要用于方法或语句块之中,主要用于说明一段代码的作用。而文档注释用于类、方法、属性之中,文档注释内容可以通过javadoc命令写入帮助文档
继承
继承来源于类的抽象,将多个类中相同的属性和行为抽取到父类中,子类通过继承父类,可以重用父类中定义的属性和方法,子类还可以定义自己的方法
通过entends关键字,使用继承,子类extends父类{}
使用原则:就是观察和抽象。将多个类中相同的属性和行为抽取到父类之中,便于代码的重用。不同的属性和方法,由子类描述,便于功能的扩展
开发时,在设计阶段,先定义子类,抽取出相同的属性和方法到父类中。在开发阶段,先定义父类,子类通过继承重用父类的属性和方法
继承有两种形式
单继承
一个类只允许有一个父类
优点:类继承的层次结构非常清晰,设计上更容易把握父类具有唯一共性
缺点:设计丰富度会降低
多继承
在多继承中,一个类允许有多个父类,可以重用多个父类的代码
优点:可以同时具有多个父类的特征,让子类有更大的丰富度
缺点:如果多个父类有相同的特征,那么子类继承的时哪一个?多继承会带来设计的混乱,继承结构也变的复杂