一、变量
1、全局变量,局部变量,静态全局变量和静态局部变量的区别
1)全局变量:
即成员变量,定义在方法外,存储在静态存储区
作用域:全局,整个源文件内都有效,从定义变量位置开始到源文件结束都有效
访问:除了当前文件可访问,可以被本程序所有对象或方法引用,还可被其他文件访问
2)局部变量:
定义在方法内,不能使用访问控制修饰符修饰,使用前必须初始化
存储在栈中
作用域:只在定义它的方法内有效,方法调用结束后失效
生命周期:调用方法时存储在栈中,方法调用结束时局部变量(包括参数)与栈帧一并被清除
3)静态全局变量:
由static修饰,定义在方法外,存储在静态存储区
作用域是只在定义该变量的源文件内有效,统一源程序的其他源文件不能使用它
4)静态局部变量:
由static修饰,定义在方法内,存储在静态存储区,作用域是方法内
程序仅分配一次内存,方法调用结束后,该变量不会消失
2、实例变量与静态变量的区别
1)实例变量:
属于某个对象的属性
创建实例对象时实例变量才会被分配空间,才能使用这个实例变量
生命周期:创建对象时存储在堆中,对象被回收时一并被回收
只能通过对象访问
2)静态变量:
属于类,也称类变量,由 static修饰
不用创建任何实例对象,只要程序加载了类的字节码,静态变量就会被分配内存,就可以使用这个静态变量
可以直接通过类名.访问