黑马程序员技术交流社区

标题: 静态变量与全局变量的区别有哪些 [打印本页]

作者: 殷士剑    时间: 2012-11-15 21:12
标题: 静态变量与全局变量的区别有哪些
本帖最后由 殷士剑 于 2012-11-18 20:18 编辑

静态变量与全局变量的区别有哪些?
作者: 李栋梁    时间: 2012-11-15 21:15
静态变量是同一个类的所有对象共享同一份数据,全局变量是定义在类里面的,然后下面的方法会可以用该变量
作者: 许坤    时间: 2012-11-15 21:35
全局变量与全局静态变量的区别:
(1)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
(2)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。
(3)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;

静态全局变量的作用:
(1)不必担心其它源文件使用相同变量名,彼此相互独立。
(2)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
(3) 只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;
作者: 曾观富    时间: 2012-11-15 22:16
区别:   
      1.全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
      2.全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
作者: 李涛兴    时间: 2012-11-15 22:21
静态变量只能定义在类的成员位置上,static不可以修饰局部变量,静态变量只能被静态方法所调用,使用有局限性。
而全局变量 用final修饰,可以修饰成员位置的变量,也可以修饰局部变量,而且只能赋值一次,相当成了固定值了。
关于final修饰的全局变量可以被所有对象和方法调用,包括内部类。
作者: 殷士剑    时间: 2012-11-17 18:58
谢谢各位!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2