溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java 常量池的實例詳解

發布時間:2020-09-29 18:14:28 來源:腳本之家 閱讀:128 作者:lxgwm2008 欄目:編程語言

Java 常量池的實例詳解

Java的常量池中包含了類、接口、方法、字符串等一系列常量值。常量池在編譯期間就已經確定,并保存在*.class文件中

一、對于相同的常量值,常量池中只保存一份拷貝。

而且,當一個字符串由多個字符串常量鏈接而成時,多個字符串被組成一個字符串常量。

例如:

package lxg;
public class main {

public static void main(String[] args) {
 String name = "lengxuegang";
 String nickname = "lengxuegang";
 String signature = "leng" + "xue" + "gang";
 System.out.println(name == nickname);
 System.out.println(name == signature);
}
}

結果為:

true
true

注意:由new String()創建的字符串不是常量,不能在編譯期間確定。因此也就不能放入常量池中,而是有自己的地址空間。

二、常量池在運行期間由JVM裝載,并且可以擴充。

String.intern()方法就是擴充常量池的一個方法。當String的一個對象str調用intern()方法時,Java首先檢索常量池中是否有相同Unicode編碼的字符串常量。如果有,則返回該字符串常量的引用;如果沒有,則在常量池中增加一個Unicode編碼等于str的字符串常量,同時返回該字符串常量的引用。

例如:

package lxg;
public class main {
public static void main(String[] args) {
 String name = "lengxuegang";
 String nickname = new String("lengxuegang");
 System.out.println(name == nickname);

 //調用intern方法后,nickname指向常量池中"lengxuegang"的引用,此時name與nickname相同 
 nickname = nickname.intern(); 
 System.out.println(name == nickname);
}
}

輸出結果為:

false
true

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女