静态常量(static final)优化详解

JVM(Java虚拟机)在处理static final修饰的类变量时,可能会进行常量折叠和静态编译优化。

常量折叠:

    JVM会尝试在编译阶段对static final修饰的基本类型或String类型的变量进行编译期常量折叠。

    这意味着它会在编译时计算表达式,并将结果作为编译时常量进行处理。这种优化减少了在运行时重复计算常量的开销,并且可以提高执行效率。

静态编译优化:

    JVM可能会对static final修饰的类变量进行静态编译优化,这种优化方式通常是特定于具体的JVM实现和编译器的。

    它可以包括将类变量的值直接内联到引用它的代码中,避免了对变量的实际访问。

通俗来说:

    如果类种有static final修饰的基本数据类型和String类型字符串(String str = "xxx"格式,而不是String str = new String("xxx")格式)

    在引用该常量时,不会导致对应类的加载。

如下图:

    在StaticFinal中有一个变量i,当变量类型为基本数据类型或者String类型时,访问该常量不会导致类加载,即不会导致静态代码块种语句执行。

    而将i变成Integer类型则会导致类加载。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值