final与static的区别
创始人
2025-05-31 16:34:43
0
  • 都可以修饰类、方法、成员变量。
  • 都不能用于修饰构造方法。
  • static 可以修饰类的代码块,final 不可以。
  • static 不可以修饰方法内的局部变量,final 可以。

static:

  • static 修饰表示静态或全局,被修饰的属性和方法属于类,可以用类名.静态属性 / 方法名 访问
  • static 修饰的代码块表示静态代码块,当 Java 虚拟机(JVM)加载类时,就会执行该代码块,只会被执行一次
  • static 修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,只会被创建一次
  • static 修饰的变量可以重新赋值
  • static 方法中不能用 this 和 super 关键字
  • static 方法必须被实现,而不能是抽象的abstract
  • static 方法不能被重写

final:

  • final 修饰表示常量、一旦创建不可改变
  • final 标记的成员变量必须在声明的同时赋值,或在该类的构造方法中赋值,不可以重新赋值
  • final 方法不能被子类重写
  • final 类不能被继承,没有子类,final 类中的方法默认是 final 的

 final 和 static 修饰成员变量加载过程例子

static修饰的存址地址一样。

public class TestStaticFinal {public static void main(String[] args) {StaticFinal sf1 = new StaticFinal();StaticFinal sf2 = new StaticFinal();System.out.println(sf1.fValue == sf2.fValue);//打印falseSystem.out.println(sf1.sValue == sf2.sValue);//打印true}
}class StaticFinal {final int fValue = new Random().nextInt();static int sValue = new Random().nextInt();}

 单独查看static修饰的字节码: clinit修饰的

如果没有static修饰的方法和类型,不会有clinit方法

上图字节码:

一、iconst_1   1入栈

二、invokestatic   有个基本类型转成包装类型的调用,调用的是静态方法。

静态方法都是使用invokestatic调用。
私有方法是使用invokespecial调用。
父类的普通方法是通过invokespecial调用。
父类的final方法是通过invokevirtual调用。
接口方法使用invokeinterface调用。

至于静态属性和静态方法,对应的指令为getstaticputstaticinvokestatic

三、putstatic #7  静态变量赋值

四、ldc #8

常量入栈指令

点#8会跳转常量池中位值。

五 astore_0

astore_0 将栈顶引用型数值存入第一个本地变量 (item成员变量)

 10 return

跳出方法体

相关内容

热门资讯

菲媒:菲律宾副总统称,不优先考... 【环球网报道】综合菲律宾《马尼拉标准报》等媒体6月1日报道,菲律宾副总统莎拉·杜特尔特称,她不优先考...
原创 美... 特朗普再次执掌白宫后,他的“地盘扩张梦”可谓是雷声大雨点小,搞得沸沸扬扬却未见实效。他本想一口气吞掉...
法网-郑钦文鏖战2-1萨姆索诺... 北京时间6月1日,2025赛季网球大满贯法国公开赛继续进行,在女单第三轮的一场比赛中,赛会8号种子、...
以国防军:黎以停火以来超180... △黎巴嫩南部地区(资料图) 以色列国防军当地时间6月1日下午发布消息称,当天上午,一名黎巴嫩真主党特...
深夜,巨子生物突发声明:接受检... 每经编辑|金冥羽 巨子生物旗下重组胶原蛋白品牌可复美产品成分争议持续发酵。 6月1日22点32分,...
新修订的《快递暂行条例》6月1... 6月1日起,《国务院关于修改〈快递暂行条例〉的决定》正式施行。此次修改,专门增加了“快递包装”章节,...
开放“以债换房”政策,可直接置... “南京网络辟谣”微信公众号6月1日发文称,近日,有“南京二手房零首付李经理”“合肥瑶珺房地产代理有限...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
基于TDesign风格的Bla... 作为一名Web开发人员,开发前端少不了使用JavaScript,而Bla...