色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 字符串池和常量池的

錢斌斌2年前8瀏覽0評論

Java中的字符串池和常量池是什么?如何使用它們呢?本文將為您講解。

Java中的字符串池是一個存放字符串對象的緩存池。如果一個字符串常量已經存在于字符串池中,那么Java虛擬機不會再新建一個對象,而是返回一個指向已有對象的引用。

以下是使用字符串池的示例代碼:

String str1 = "Hello World";
String str2 = "Hello World";
String str3 = new String("Hello World");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

以上代碼中,str1和str2都是直接賦值的字符串常量,它們會被自動存放到字符串池中。因此,str1和str2指向的是同一個字符串對象,比較它們的地址時返回true。而str3使用new關鍵字創建了一個新的字符串對象,它的地址和str1、str2是不同的,因此比較它們的地址時返回false。

Java中的常量池是一個類級別的方法區域,用于存放編譯期常量和符號引用。編譯器會為每個字符串常量創建一個對應的符號引用,并保存到常量池中。如果有其他的字符串常量和這個引用相同,那么它們都指向同一個符號引用。

以下是使用常量池的示例代碼:

class MyClass {
public static final String STR1 = "Hello World";
public static final String STR2 = "Hello World";
public static final String STR3 = new String("Hello World");
}
System.out.println(MyClass.STR1 == MyClass.STR2); // true
System.out.println(MyClass.STR1 == MyClass.STR3); // false

以上代碼中,STR1和STR2都是在類中通過final關鍵字聲明的字符串常量,它們會被保存在常量池中,因此比較它們的地址時返回true。而STR3使用new關鍵字創建了新的字符串對象,它和STR1、STR2指向的常量池中的符號引用不同,因此比較它們的地址時返回false。

以上就是Java中字符串池和常量池的基本概念和用法,希望能幫助您更好地理解。