一、运行流程
①.将编写好的java源程序(.java)通过编译器生成字节码文件(.calss)
②.通过JVM类加载器加载所有的字节码文件
③.加载完字节码文件后交给JVM执行引擎执行Java程序。
注意:所有的Java程序最终都是在运行时数据区来运行。
内存结构
①.方法区
-类的信息(访问修饰符 全类名(包名+类名) 注解)
-静态的成员的属性(static修饰的成员属性)
-常量(static final 修饰的成员属性)
final:
- 1.fanal修饰的类不能被继承 String类默认final修饰
- 2.final修饰的成员属性是常量
常量是存储在方法区的常量池 - 3.final修饰的方法不能被重写
-静态方法(static修饰的成员方法)
-成员方法
②.堆
-new 出来的对象
-数组、接口
③.栈
-局部变量
-对象的引用
静态变量和实例变量(成员变量)的区别?
①.静态变量存储在方法区(静态域)
②.实例变量存储在堆中
③.静态变量可以被所有的对象共享
④.实例变量只属于某一个实例