欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java常量池編譯期和運行期

張吉惟1年前7瀏覽0評論

Java 常量池是在 Java 運行環境中為了提高性能而引入的。它是指在編譯期和運行期中被同時使用的一個存儲器區域,用于存放編譯期與運行期中的各種字面量和符號引用。所以 Java 常量池也被稱為符號表。其中包括類名、方法名、字段名、接口名、字符串常量等。

在編譯期中,Java 常量池用于存放編譯期生成的常量,例如 String、int、float 等類型的常量;同時還包括對其他類、方法、字段的符號引用。這些常量被保存在 .class(.java 文件編譯后的文件)文件中的常量池表中。

public class ConstantPool {
public static final int NUM = 10;
public static final String STR = "Hello";
}

以上代碼中,NUM 和 STR 都是編譯期常量,會存放在常量池中。

在運行期中,Java 常量池用于存放運行期生成的常量,例如通過 String 類的 intern() 方法生成的字符串常量。其他各種字面量和符號引用也會在運行期被加載到常量池中。

public class RuntimeConstantPool {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "World";
String str3 = str1 + str2;
String str4 = "HelloWorld";
System.out.println(str3 == str4); // true
}
}

以上代碼中,str1 和 str2 是兩個字符串常量,它們被編譯期存放在了常量池中;而 str3 是通過字符串拼接運行時生成的新字符串,由于常量池中已經存在 "HelloWorld" 這個字符串,所以 str3 引用的是常量池中的 "HelloWorld",而 str4 也是指向常量池中的 "HelloWorld"。所以 str3 和 str4 的比較結果為 true。

總之,Java 常量池在編譯期和運行期都發揮著重要的作用,通過使用常量池可以減少內存使用,提高性能,同時還能夠避免實例化出多份相同常量的內存浪費。