String與字串池
public class StringInternTest {
public static void main(String[] args) {
// 使用char 陣列來初始化a,避免在a 被建立之前字串池中已經存在了值
為"abcd"的物件
String a = new String(new char[] { 'a', 'b', 'c', 'd' });
String b = a.intern();
if (b == a) {
System.out.println("b 被加入了字串池中,沒有新建物件");
} else {
System.out.println("b 沒被加入字串池中,新建了物件");
}
}
}
b 沒被加入字串池中,新建了物件字串池和String類的基本關係:
Java執行環境有一個字串池,由String類維護。
1、執行語句String str="abc"時,首先檢視字串池中是否存在字串"abc",如果存在則直接將"abc"賦給str,如果不存在則先在字串池中新建一個字串"abc",然後再將其賦給str。
2、執行語句String str=new String("abc")時,不管字串池中是否存在字串"abc",直接新建一個字串"abc"(注意:新建的字串"abc"不是在字串池中),然後將其付給str。
3、當呼叫 intern 方法時,如果池已經包含一個等於此 String 物件的字串(用 equals(Object) 方法確定),則返回池中的字串。否則,將此 String 物件新增到池中,並返回此 String 物件的引用。
String a = new String(new char[] { 'a', 'b', 'c', 'd' }); 這個就是第二種情況了,此時字串a不在字串池中,String b = a.intern(); 因為a不在字串池中,所以在執行a.intern()時,會把a新增在池中,然後返回a的引用,所以b的值就是a的引用,所以a不等於b。
它遵循以下規則:對於任意兩個字串 s
和 t
,當且僅當 s.equals(t)
為
true
時,s.intern() == t.intern()
才為 true
。
String a = new String(new char[] { 'a', 'b', 'c', 'd' });
System.out.println(a=="abcd");
---false
String a = new String(new char[] { 'a', 'b', 'c', 'd' });
String b = a.intern();
System.out.println(b=="abcd");
---true
相關文章
- java基礎:String — 字串常量池與intern(二)Java字串
- Java中的String與常量池Java
- 從字串到常量池,一文看懂String類設計字串
- String字串字串
- string 字串字串
- Java與眾不同的字串-String類Java字串
- Java String類,字串常量池,建立方法,字串的獲取,擷取,轉換,分割。Java字串
- Java String常量池Java
- JavaScript String 字串JavaScript字串
- Java常量池解析與字串intern簡介Java字串
- 字串常量池字串
- JavaScript 字串(String) 大全JavaScript字串
- Java-string字串Java字串
- String:字串型別字串型別
- String字串,陣列字串陣列
- C# 字串(String)C#字串
- JAVA虛擬機器-方法區與字串常量池Java虛擬機字串
- Redis命令String(字串)教程Redis字串
- 瞭解下C# 字串(String)C#字串
- 4.JNI: 操作字串String字串
- Redis的字串型別(String)Redis字串型別
- 字串操作>靜態串String字串
- Swift - 字串(String)用法詳解Swift字串
- Unity String格式化字串Unity字串
- Java String 字串拼接的三種方式與效率對比分析Java字串
- Java中的字串池概念Java字串
- JDK1.8 String常量池詳解JDK
- Java中,那些關於String和字串常量池你不得不知道的東西Java字串
- 連結字串String.prototype.format字串ORM
- String/StringBuilder字串拼接操作UI字串
- DI String Match 增減字串匹配字串匹配
- InputStream流轉換成String字串字串
- String字串效能優化的探究字串優化
- redis string 簡單動態字串Redis字串
- 高效操作字串的String Reference類字串
- [CareerCup] 1.3 Permutation String 字串的排列字串
- [CareerCup] 1.2 Reverse String 翻轉字串字串
- java中字串常量池的用法Java字串