static函数与普通函数

  • static 方法就是没有 this 的方法;
  • static 无论是修饰函数,还是函数内的局部变量,似乎都提供了一种全局的可见或者共享(所谓共享,或者可以理解为只有一份):
    • 修饰成员函数,类本身当然也包括全部类对象实例
    • 修饰函数内部的局部变量,该对象在全局的函数调用时,不会重新压栈赋以新的值,而使用的是同一个对象,而不是对象副本;
  • 将一个对象声明为 static,是因为仅需要唯一一份对象

1. 具有 static 局部变量的函数

具有 static 局部变量的函数,让函数有了状态,让函数有了时态(时间的概念)。
用于初始化某对象,当然初始化的动作仅做一次;以后再次调用该函数时,初始化语句便不再执行,直接取其值;

2. 类内 static 成员函数:

  • 该函数与特定的对象无关,自然也与一般的成员变量无关,不可以访问任何与特定的对象有关的成员,为该类本身,以及全部的类对象实例共享;

3. 可见性

全局变量(外部变量)的说明之前再冠以 static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。

这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

理解 static 关键字相关推荐

  1. 深入理解static关键字

    文章目录 1.static存在的主要意义 2.static的独特之处 3.static应用场景 4.静态变量和实例变量的概念 5.静态变量和实例变量区别[重点常用] 6.访问静态变量和实例变量的两种方 ...

  2. JAVA知识基础(四):深入理解static关键字

    1.static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法.以致于即使没有创建对象,也能使用属性和调用方法! static关键字还有一个比较关键的作用就是 用来形成 ...

  3. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  4. Java基础:详解static关键字与类加载顺序

    1. 前言 前文中说到了static关键字,在Java中这是一个很重要的关键字,它有很多的用法,并且在某些特定的情况下使用可以优化程序的性能.本文学习static关键字的应用场景.在这之前了解变量的类 ...

  5. 程序员你真的理解final关键字吗?

    文章目录 1.修饰类 2.修饰方法 3.修饰变量 4.final变量修饰变量(成员变量.局部变量) 4.1 final修饰成员变量: 4.2 final修饰局部变量: 5.final变量和普通变量的区 ...

  6. C++中关键字的理解--Static

    C++中关键字的理解---Static    目录:1.static缘起             2.static自我理解             3.static举例使用             4 ...

  7. java static关键字_好程序员Java教程分享static关键字的理解

    好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的. 1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性.所以调用时应该使用类名去调用, ...

  8. 为什么java要你写static,java static关键字理解

    文章大纲: 1.为什么static会有这样的效果? 2.static的使用 3.static误区 4.static面试题 static的魔法效果是: 被static关键字修饰的方法或者变量不需要依赖于 ...

  9. java中static关键字的理解(转载)

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...

最新文章

  1. Xcode 6 Bug:Interface Builder文件中的未知类
  2. angular动态选择HTML模板,在angular2中动态加载HTML模板
  3. trident State应用指南
  4. java批量转换图片格式
  5. Linux小宝典之理解Chroot模式
  6. Go语言实战 : API服务器 (8) 中间件
  7. 拿下字节offer,这些面试题命中率高达90%以上
  8. lduan server 2012 ***管理 上(三十九)
  9. 存储控制器wwn号_AUTOSAR学习笔记之存储
  10. php公共控制器,Thinkphp 3.2.3 公共控制器的使用
  11. pandas中size方法_eplot,在pandas中流畅的使用pyecharts!
  12. MFC_选择目录对话框_选择文件对话框_指定目录遍历文件
  13. pr视频剪辑中工具栏功能详解
  14. 为戴尔服务器下载ESXi
  15. Android 项目必备(八)--> APP 的开发流程
  16. 【视听盛宴】《高效能人士的七个习惯》分享会
  17. 关于安科瑞电气安全产品在医药工业洁净厂房的电气工程设计与应用
  18. Redis 自动过期 使用 EXPIRE、PEXPIRE:设置生存时间
  19. Swing组件与监听器
  20. 骁龙780G​和骁龙750G哪个好 高通骁龙780G​和骁龙750G区别参数对比

热门文章

  1. win10远程计算机或设备将不接收连接?
  2. 一、Nginx源码安装与yum安装
  3. Android复习准备
  4. 折线图_Line plot - 折线图
  5. zip压缩文件暴力破解
  6. LeetCode 435. 无重叠区间(贪婪算法)
  7. Linux安装python3.8时,编译过程中报错Could not build the ssl module!
  8. Qt中Q_OBJECT与生成的moc文件的作用
  9. Python各类图像库的图片读写方式总结
  10. 利用Servlet做一套增删改查