Java静态全局变量与全局变量的区别

Static全局变量与普通的全局变量有什么区别?

答:
  全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个原文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
  由于静态全局变量的作用域限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。
  static全局变量与普通的全局变量的区别是static全局变量只初始化一次,防止在其他文件单元被引用。

2.static函数与普通函数有什么区别?
答:
  static函数与普通的函数作用域不同。尽在本文件中。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。
static函数与普通函数最主要区别是static函数在内存中只有一份,普通静态函数在每个被调用中维持一份拷贝程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)

静态全局变量(也称静态类变量)和静态局部变量都是Java中的静态作用域变量,但它们有显著的不同点: 1. **生存周期**: - **静态全局变量**: 它在程序启动时被创建,并且一直存在于整个程序运行期间,直到程序结束才被销毁。 - **静态局部变量**: 每次函数调用时创建并初始化,仅存在于当前函数的执行上下文中,函数返回后自动销毁,下次函数调用会重新创建。 2. **内存分配**: - **静态全局变量**: 存储在方法区(Java SE 7以后改名为堆),所有对象共享这部分空间。 - **静态局部变量**: 存储在栈上,只占用一次内存空间,不会与其他同类变量混淆。 3. **初始化时机**: - **静态全局变量**: 类被加载时首次初始化。 - **静态局部变量**: 在声明它的函数开始执行时初始化,如果在循环体内部,会被多次初始化。 4. **作用范围**: - **静态全局变量**: 可以在类的所有方法中访问。 - **静态局部变量**: 只能在声明它的函数内访问。 5. **并发问题**: - **静态全局变量**: 如果需要保证其线程安全性,需要手动添加同步措施。 - **静态局部变量**: 自动具有线程隔离性,因为每次函数调用都独立创建新副本。 总之,静态全局变量用于长期保存状态或供整个程序共享的信息,而静态局部变量则更多地用于临时存储或避免不必要的全局变量污染。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值