0
点赞
收藏
分享

微信扫一扫

jvm复习: 一个类引用其它类的final类型的常量时会直接在编译阶段放入自己类的常量池


一个类引用其它类的final类型的常量时会直接在编译阶段放入自己类的常量池,因此在运行时使用该常量时,不会引起被引用的常量所在的类的初始化。

package cn.edu.tju;

public class OtherClass {
public static final int x=2023;
static {
System.out.println("in other class...");
}
}

package cn.edu.tju;



public class InitTest2 {
public static void main(String[] args) {
System.out.println(OtherClass.x);
}
}

输出:

jvm复习: 一个类引用其它类的final类型的常量时会直接在编译阶段放入自己类的常量池_java

但是有特殊情况,对于编译器无法确定值得常量,则不适用上述规则。

package cn.edu.tju;

import java.util.UUID;

class OtherClass3{
public static final String str = UUID.randomUUID().toString();
static {
System.out.println("in other class 3...");
}
}
public class InitTest3 {
public static void main(String[] args) {
System.out.println(OtherClass3.str);
}
}

输出:

jvm复习: 一个类引用其它类的final类型的常量时会直接在编译阶段放入自己类的常量池_System_02


举报

相关推荐

0 条评论