内存结构:
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放,被gc回收。
堆内存:数组和对象,实例变量,通过new建立的实例都存放在堆内存中。
方法区:静态成员、构造函数、常量池、线程池
局部变量:
存储在栈,类里方法中的变量。
作用范围:在该方法内
生命周期:方法被执行完。
被修饰时:只能final,
使用时:要自己显示赋值,
当局部变量和成员变量同名时,使用时局部变量更高优先级,这时需要用成员变量时用this访问。
成员(全局)变量:类里的变量。
static修饰的是静态(类)变量,存储在方法区的静态区里面
没有static修饰的是实例变量,储存在堆
作用范围:在该类里面或者权限允许类外部也可以使用
生命周期:
静态变量:整个程序运行期间
实际变量:对象的生存期
被修饰时:public, pravite, static, final等
使用时:被加载或实例化是,系统会分配内存,给默认值,基本类型的默认为0,如int ,复合类型默认为null如Integer
补充:
静态变量:存储在方法区的静态区,通过类名直接调用,也可以用对象调用,
应用:当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。
实例变量:存储在堆,通过对象调用