变量有分全局变量和局部变量 也分静态变量和普通变量
先说全局变量和局部变量的区别:
1.存储位置不同:全局变量存储在方法区,局部变量存储在栈区
2.生命周期不同:全局变量的生命期和主程序一样,随着程序的销毁而销毁,局部变量在函数内部,函数退出了就不存在
3.使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量
注意:局部变量不能赋值为同名全局的值
int value =1
int main(){
int value = value;
syste.out.printf(value+"");
}
程序输出-34323322 因为局部变量会覆盖全局变量,局部变量没有赋值 因此输出随便值
java中成员变量(全局变量) 成员变量好比试正式员工,而局部变量就是临时工,随时销毁,成员变量伴随着对象。
静态变量和普通变量的区别
最明显的特性:全局静态变量属于类,成员变量属于对象
类的静态变量在内存只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享,静态变量通过类名.xxx进行访问,生命周期取决于类的生命周期。
成员变量取决于类的实例,每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆。
java中初始化顺序:加载类,静态变量初始化,静态快,成员变量 构造方法
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。