static 表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,
Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。
static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。
static的一些特性:
(1) static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
(2)statice有两种作用:一、只想为某特定域分配单一的存储空间,而不考虑要去创建多少对象,甚至不创建对象;二、希望某个方法不与包含他的任何对象关联在一起,也就是不创建任何对象也能调用其中的任何方法。
(3)被statice修饰的任何成员变量和成员方法独立于该类的任何对象,它不依赖类的任何对象,对所有实例共享。
(4)静态变量在内存中只有一个拷贝,jvm只对静态分配一次内存,加载类的过程中就完成对静态变量的内存分配,可用类名直接访问。
(5)静态代码是和class绑定的,class装载成功就表示执行了你的静态代码,而且以后不会再走这套静态代码了。Class.forName()的作用是要求JVM查找并加载指定的类,也即是说JVM会执行该类的静态代码段。
(6)静态的方法属性初始化,是在加载类的时候初始化。而非静态方法属性初始化。

示例:
public class Test {
     static int i;
     static
     {
          i++;
          System.out.println("outt i:"+i);
     }
     static void outi()
     {
            i++;
            System.out.println("output i:"+i);
     }
     public static void main(String [] argStrings)
     {
          Test test=new Test();
          test.outi();
     }
}
输出结果:
outt i:1
output i:2

最新文章

  1. NSwagStudio for Swagger Api
  2. Save()saveOrUpdate()Hibernate的merge()方法
  3. 本地仓库 同步到 bitbucket 远程git库
  4. 【python网络编程】新浪爬虫:关键词搜索爬取微博数据
  5. Javascript参考手册
  6. 基于.net mvc的校友录(六、codefirst的使用以及班级模块的关键部分实现)
  7. 命名空间 和 class_exist() 问题
  8. javaweb中去除某个get方式的参数,并且返回路径
  9. VC/MFC使用OLE操作 EXCEL
  10. Linux Command Line(II): Intermediate
  11. PHP全栈学习笔记14
  12. WPF软件开发系统之六——药品管理查询系统
  13. 解决 spring-cloud-starter-zipkin 启动错误
  14. [Swift]LeetCode317. 建筑物的最短距离 $ Shortest Distance from All Buildings
  15. 【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning
  16. 【PyQt5-Qt Designer】文本框读写操作
  17. [leetcode]Surrounded Regions @ Python
  18. CentOS7 使用ntp设置系统时间,开机自动设置时间,
  19. spring 项目中在类中注入静态字段
  20. SQL触发器实例(下)

热门文章

  1. python3+django2 开发易语言网络验证(上)
  2. sublime text 2 解决错误 [Decode error - output not utf-8]
  3. iOS开源加密相册Agony的实现(六)
  4. J2EE进阶(十八)基于留言板分析SSH工作流程
  5. Mybatis源码分析之参数映射及处理ParameterHandler
  6. [ExtJS5学习笔记]第三十五节 sencha extjs 5 组件查询方法总结
  7. Kafka学习笔记1:概念
  8. iOS网络基础
  9. 统计处理包Statsmodels: statistics in python
  10. 20 ViewPager demo5,6:FragmentAdapter 导航数据