Java中的static关键字整理

特点:

被static修饰的方法或变量在内存中只有一个副本,被所有对象共享。
不依赖于任何对象就可以进行访问。

使用

  • static变量

    1. 当且仅当类加载时被初始化
    2. 初始化顺序按照定义的顺序初始化
  • static方法

    1. 不能访问非静态成员变量和非静态成员方法
    2. main方法
      程序在执行main方法是没有创建任何对象,因此只有通过类名访问
    3. 静态方法与实例方法区别:
      (1)Java中“静态”有多个意思,至少包括以下两点:一是在Java语言中使用static修饰方法时,表示“静态方法”。二是一个方法调用到底能否在运行前就确定一个固定的目标(即早绑定和晚绑定),静态方法属于早绑定。
      (2)在概念中的JVM上的区别:
      Java虚拟机规范第二版中这样描述它们局部变量区的不同:

    The Java virtual machine uses local variables to pass parameters on method invocation. On class method invocation any parameters are passed in consecutive local variables starting from local variable 0. On instance method invocation, local variable 0 is always used to pass a reference to the object on which the instance method is being invoked (this in the Java programming language). Any parameters are subsequently passed in consecutive local variables starting from local variable

    调用类方法时,所有参数按顺序存放于被调用方法的局部变量区中的连续区域,从局部变量0开始;在调用实例方法时,局部变量0存放传入该方法所属的对象实例(Java中的”this”),所有参数从局部变量1开始存放在局部变量区的连续区域中。
    从效果上看,这就等于在调用实例方法时总是把”this”作为第一个参数传入被调用的方法。

  • static代码块

    1. 特性:只在类加载的时候执行一次。
    2. 类初始化顺序:
      Java中类初始化顺序,依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
      值得注意的是:
      (1)static final 变量在赋值时,值必须编译前就明确了. 若采用 static 变量进行赋值,—— 只能static 代码块中进行赋值(class文件中的实现方式)。
      (2)成员变量赋值时引用了其它变量时,都会在构造器中被赋值(class文件中的实现方式)。
参考

http://www.cnblogs.com/dolphin0520/p/3799052.html
http://rednaxelafx.iteye.com/blog/652719
https://blog.csdn.net/csdnno/article/details/52495891

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值