A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 殷士剑 中级黑马   /  2012-11-15 21:12  /  1499 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 殷士剑 于 2012-11-18 20:18 编辑

静态变量与全局变量的区别有哪些?

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 鼓励分 。

查看全部评分

5 个回复

倒序浏览
静态变量是同一个类的所有对象共享同一份数据,全局变量是定义在类里面的,然后下面的方法会可以用该变量

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
全局变量与全局静态变量的区别:
(1)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
(2)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。
(3)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;

静态全局变量的作用:
(1)不必担心其它源文件使用相同变量名,彼此相互独立。
(2)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
(3) 只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
区别:   
      1.全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
      2.全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
静态变量只能定义在类的成员位置上,static不可以修饰局部变量,静态变量只能被静态方法所调用,使用有局限性。
而全局变量 用final修饰,可以修饰成员位置的变量,也可以修饰局部变量,而且只能赋值一次,相当成了固定值了。
关于final修饰的全局变量可以被所有对象和方法调用,包括内部类。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
谢谢各位!

点评

麻烦改变下帖子状态 。  发表于 2012-11-17 18:59
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马