静态变量(静态变量和实例变量的区别)
admin
本篇文章给大家谈谈静态变量,静态静态以及静态变量和实例变量的变量变量区别?对应的知识点,希望对各位有所帮助,和实不要忘了收藏本站喔。例变量 JAVA中的静态变量能够通过静态方法来访问,不管创建了类的静态静态多少实例,整个类中的变量变量静态变量的副本只有一个。静态变量实质上就是和实一个全局变量,当我们声明一个对象时,例变量并不产生静态变量的区别拷贝,而是静态静态该类所有的实例变量共同一个静态变量。 这样说起来好象很抽象,变量变量其实静态变量就是和实一个全局变量,我们在程序中的例变量任何地方,都可以用它而且可以不实例话它,区别在我们调用静态变量的时候它的值不会初始化到以前的值,也就是说它是会变化的。比如,静态变量的初始值为1,但是经过我们调用后它的值变成了2,那么下次我们再调用它的时候,它的值就是2了而不会是1。 静态变量 类型说明符是static。 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执 行过程中始终存在,但是在它作用域之外不能使用。 另外,属于静态存储方式的量不一定就是静态变量。 例如:外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。 静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样申请。 静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。 静态变量(static)是相对自动变量(auto)等而言的,一旦声明为静态变量,在编译时刻开始永远存在,不受作用域范围约束,但是如果是局部静态变量,则此静态变量只能在局部作用域内使用,超出范围不能使用,但是它确实还占用内存,还存在. 简单来说,静态变量就是一个变量名称前有static标注的 比如说 static int a; 全局变量等于静态变量,他们的差别你可以简单理解成在作用域上的差别,静态变量是在一个函数中的作用域(主函数就是主函数作用域,局部函数就是局部函数的作用域),而全局函数是写在主函数外的(非局部函数中)空白处的变量,其生命期在主函数之前即产生,随着主函数运行完数据再有系统回收 而动态变量与静态变量的差别是 例如 void a(){ static int i=0; //静态 i++; } void b(){ int i=0; //动态 i++; } 动态变量就是,每一次调用完系统回收内存,下一次调用再分配内存, 而静态变量的生命期会在主函数运行结束后内存才会被系统收回 1、存储位置不同 静态变量:存储在全局数据区(静态数据区)。 非静态变量叫动态变量:存储在内存出栈数据区。 2、生命期不同 动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效。 静态变量:程序结束时才释放。 3、作用域不同 动态变量:同样的要根据你定义的位置才能确定,和第二点的一样。 静态变量:当前文件中有效。 扩展资料; 静态变量的作用; 1、对于静态全局变量,源文件静态声明的文件级变量和函数的作用域仅限于文件(仅在文件中可见),即内部连接,因此可以用来限制变量的作用域。 2、对于静态局部变量,虽然函数内静态声明的变量范围与自动局部变量的范围相同(即范围仅在函数内),但存储空间是通过静态分配而不是默认的自动分配获得的。 所以存储空间在不同的区域是不同的(一般来说,静态分配时在编译时在程序数据段中划分存储空间,一次性分配在整个过程中是有效的。而在自动分配时,存储空间是在调用堆栈上分配的,只分配和释放在调用期间),两个调用之间的变量值总是一致的。必须注意,静态局部变量只能初始化一次,这是由编译器保证的。 3、对于静态成员变量,在C++中,类定义中静态声明的成员变量属于类变量,即它们在所有类实例中共享,相反是过程变量。 参考资料来源;百度百科——静态变量 百度百科——动态变量 一、形式不同: 静态变量是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value; 动态变量,形式为TYPE var_name = init_value;即没有static 修饰,其中的=init_value均可省略。 二、作用不同: 动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量,生命周期为从程序运行到程序退出,即贯穿整个运行时间。 静态全局变量:作用域为当前文件,从定义/声明位置到文件结尾,生命周期为从程序运行到程序退出,即贯穿整个运行时间。 常量使用 静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。 编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区;为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。 以上内容参考:百度百科-静态变量 静态变量的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于静态变量和实例变量的区别?、静态变量的信息别忘了在本站进行查找喔。静态变量是什么意思?
什么是静态变量
“静态”变量是什么意思?请教
什么是静态变量,静态变量=全局变量,动态变量=局部变量吗??
静态变量与非静态变量的区别
C语言动态变量和静态变量的区别
原文链接:http://oei.codezack.com/news/633a94198425.html
- 最近发表
- 随机阅读
-
- 车模吴稀儿(车模吴稀儿的简介)
- 林萧萧(林萧萧淑妃)
- 林苏豪(林书豪祖籍在哪里)
- 林西亚(林西娅)
- 柴达木盆地(柴达木盆地是我国的四大盆地之一它位于我国的哪里)
- 林允泽(林允孙伊涵)
- 林夏语录(林夏语录北爱)
- 林姝敏(林姝敏微博)
- 产品可靠性测试(可靠性测试包括哪些)
- 林心如和林志颖接吻(林志颖和林心如亲密照)
- 林又立(林又立参加欢乐幸运星节目)
- 林芝地区(林芝地区海拔高度多少)
- 潮州人(潮州人和潮汕人的区别)
- 林宥嘉杭州演唱会(林宥嘉杭州演唱会2019)
- 林晓薇(林夏薇陈晓)
- 林志玲董卿(林志玲董卿当托)
- 潮皇食府(潮皇食府月饼)
- 林西娅(林西娅发文)
- 林雅诗(林雅诗)
- 林心如韩国(林心如韩国颁奖典礼)
- 搜索
-