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

Tables 作用域 存储方式 生命周期 初始化 java C/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的意义就是要这个变量在对象没产生之前就就存在,那么在时间上造成冲突

发布了244 篇原创文章 · 获赞 799 · 访问量 234万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503

分享到微信朋友圈

×

扫一扫,手机浏览