您的位置:首页 > 其它

全局变量、静态全局变量、局部变量、静态局部变量

2015-09-07 15:18 274 查看
Tables作用域存储方式生命周期初始化javaC/C++
全局变量(外部变量)整个工程文件内内存的静态存储区域整个源程序0没有全局变量的概念在main()函数前(类外)定义,用extern int g_int ;声明,才可以使用
静态全局变量定义它的文件内内存的静态存储区域整个源程序0类里声明为public static的变量main()函数内(类内)定义变量使用static
局部变量在定义它的函数内内存的栈区函数返回后变量消失不可知在函数内直接定义在函数内直接定义
静态局部变量在定义它的函数内内存的静态存储区域整个源程序0在函数内使用static定义
java中一切都是类的一部分。java中的全局变量可以定义一个final类来实现类中的变量可以当作全局变量

1、static应用范围:可用于内部类、方法和变量。

2、标记一个方法为static,意味着这个方法,被所在类的所有实例公用,在类装载时被首先执行,执行一次即被所有该类的实例共享,同时意味着:

A、static方法内部不能引用非static变量。

B、static方法不能被子类重写为非static方法。

C、父类的非static方法不能被子类重写为static方法。

D、static代码块可以用static {}来完成,在类被第一次装载时执行初始化,先于静态方法和其他方法的执行。

关于java没有静态局部变量的理解:

很简单的原因是因为sun并没有给java的static赋予c/c++中static那么多的意义。在java中static的意义就只有是在类被加载之后就分配空间(存在)的东西

使用局部静态变量是很不好的编程习惯,在c/c++编程中也应该尽量避免。这种方法基本上都不是thread safe的,重入也有问题。

没有什么东西是一定要使用局部静态变量的,一般这种都是为了记录状态,其实只要加个参数就可以解决了。

我们知道成员方法是在对象创建后才分配空间的,那么如果在成员方法内部定义个static变量,按照java中static的意义就是要这个变量在对象没产生之前就就存在,那么在时间上造成冲突
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: