静态变量static , 全局变量global

静态变量 在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例。它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存,类的静态变量就分配了内存空间,他是属于类的也就是没个实例对象都是对于以个静态变量,静态变量的内存空间知道程序退出才释放所占用的内存空间。静态变量直接通过类名访问(java 也能通过对象名访问)。

有人会分全局的静态变量、局部的静态变量;全局静态变量失去了“全局”的普遍含义,它的作用域限定在本文件里。而静态变量的声明是应该出现在类里不是类的函数里。

全局变量 关键字global也是静态存储方式,存储在静态存储区。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。

全局变量和静态变量的区别:

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

也能这么看:

A.若全局变量仅在单个文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题:

D.如果我们需要一个可重入的函数,那么我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的函数)

E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。

变量的6种作用:全局作用域,文件作用域,命名空间作用域,类作用域,局部作用域,语句作用域。

java 静态全局变量_静态变量static和全局变量global相关推荐

  1. c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解

    静态链接与动态链接的宏观概述及微观详解 第一部分 宏观概述 1. 静态链接 静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库 ...

  2. java静态链表_静态链表及其创建(C语言实现)

    <顺序表和链表优缺点>一节,我们了解了两种存储结构各自的特点,那么,是否存在一种存储结构,可以融合顺序表和链表各自的优点,从而既能快速访问元素,又能快速增加或删除数据元素. 静态链表,也是 ...

  3. python动态与静态语言_静态语言和动态语言的区别

    via https://blog.csdn.net/hard_days/article/details/84967298 今天在群里聊天的时候,谈论到python和Java相比居然不用定义变量类型.我 ...

  4. java 静态扫描_静态代码扫描工具 – (八)- 扫描Java项目

    静态代码扫描工具 – (八)- 扫描Java项目 1.准备好Java项目代码 只要是java语言实现的项目均可. 比如,自动化测试的代码,测试平台等均可以. 本次案例,使用java语言实现的测试平台来 ...

  5. 静态组件_静态网站的出色附加组件,可让您跳舞

    静态组件 This post is originally from www.jaredwolff.com 这篇文章最初来自www.jaredwolff.com Privacy. 隐私. Perform ...

  6. java classpath作用_环境变量classpath的作用是什么

    classpath是javac编译器专用的一个环境变量,作用是告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包. 环境变量(environment variables ...

  7. 2010_8_18_静态路由_静态路由路由排错(不连续地址汇总)

    网络拓扑 试验要求: 使用默认路由代表大多数的网段来减小路由表. 实验配置详解 1.在Route0上 Router#confi t Router(config)#ip route 0.0.0.0 0. ...

  8. python在函数内部有没有办法定义全局变量_修改函数内部的全局变量

    我定义了以下函数:def GMM(s1, s2, s3, s4, s5, a): """The GMM objective function. Arguments --- ...

  9. python在函数内部有没有办法定义全局变量_主函数内部的全局变量python

    你想要什么是不可能的*.你可以在全局命名空间中创建一个变量: myglobal = "UGHWTF" def main(): global myglobal # prevents ...

最新文章

  1. matlab 职坐标,机器学习入门之机器学习实战ByMatlab(四)二分K-means算法
  2. 七夕大礼包:26个AI学习资源送给你!
  3. pct_change()
  4. 【深度学习】深度学习的发展方向: 深度强化学习!
  5. 20 岁发表 SCI 的学霸,梦想用算法改变世界
  6. Linux技术研究-基础篇(启动和自动挂载)
  7. Tornado入门之旅
  8. caffe训练过程中的可视化
  9. vue点击图片放大功能
  10. 锐浪报表数据源access_学习锐浪报表之MySQL连接字符串的实际操作步骤汇总
  11. Android 正则表达式
  12. 每天一道面试题--- js 中 this 指针的用法
  13. 计算机专业的创新方向和创业情况,计算机专业创新创业教育模式探究
  14. 串口通信(串口助手发送数据给单片机,单片机原封不动发给串口助手)
  15. 操作系统之移臂调度算法
  16. React.createElement的理解使用
  17. 史上最全测试流程详解----超详细
  18. BugKu——你必须让他停下
  19. 浏览器查看cookie过期时间
  20. 经典问题解决办法(转)

热门文章

  1. 单片机 STM32 HAL 射频读卡器 RC522
  2. 小程序源码:自适应来电模拟器-多玩法安装简单
  3. python查看bit_[python] bit 操作与易经
  4. 微信小程序之setData用法
  5. java文件夹拒绝访问-java.io.FileNotFoundException: .\xx\xx (拒绝访问。)
  6. 机器学习之Python使用KNN算法对鸢尾花进行分类
  7. 4点技巧教你如何正确管理多个微信群
  8. Ubuntu安装byzanz截取动态效果图
  9. Spring Boot + vue-element 开发个人博客项目实战教程(四、数据库搭建和配置)
  10. python 解压zip密码正确但解压失败_在Python中用密码解压zip文件失败的bug?