局部变量:
在方法中开辟的变量,只在方法中有效
局部变量在定义时不会初始化,要显式的给它一个值(如未给它一个初始值,虽然编译的时候会通过,但是运行的时候会产生为初始化错误!)。
方法调用代码执行完,局部变量便会自动释放。
在方法内的语句块中建立的变量在编译时假如未初始,如若使用,也会报未初始化错误!(调用的时候不会为其开辟空间)
全局变量
在类中定义的,对该类的所有方法所共有
全局变量不用进行显式初始化,但如果全局变量的修饰符为final,要进行显式的初始化,否则编译不通过。
会调用构造方法为其初始化实例全局变量
如果是静态全局变量,可以通过静态初始化块为其初始化。
生命周期是随着对象的销毁而销毁。
静态全局变量
归该类的所有对象所公有
特点
1.虚拟机一加载该类的字节码,便会为其的静态全局变量在方法区的静态数据区开辟空间,空间的大小由变量的类型所决定,并初始化,就和相应的类相关联。
2.虚拟机在创建一个对象时,如若有静态全局变量,则会为该静态全局变量在堆中创建一个引用。这个引用指向了方法区的静态数据区中的该变量的空间。所以在方法中使用静态全局变量时,会先找到该引用,再通过该引用找到在静态数据区的该变量。
3.在主方法中调用为在主方法中定义的变量,会默认为是静态全局变量。
4.在代码执行过程中不会被销毁.