intern方法簡介

2021-08-17 17:59:13 字數 564 閱讀 9365

string的常量池一般稱為stringconstant pool(實質是乙個陣列),stringconstant pool作為執行時資料存放在permanent區(方法區),jdk1.7之後放在堆空間中。

string str="123"; str這個引用存放在棧中,123這個字串存放在常量池。

string st=new string("123");會生成3個物件:st這個引用存放在棧中,堆中的123,常量池的123。

intern()方法:當呼叫 intern 方法時,如果常量池已經包含乙個等於此 string 物件的字串(該物件由 equals(object) 方法確定),則返回池中的字串。否則,將此 string 物件新增到池中,並且返回此 string 物件的引用。

jdk1.6之前,常量池中存放的是具體的字串,執行string.intern()這個本地方法,jdk1.6進行equals判斷,常量池沒有則複製此字串加入常量池並返回指向此常量池字串的引用;jdk1.7之後,常量池中存放的是字串的引用,執行string.intern()方法,jdk1.7進行equals判斷,常量池沒有則將此字串的引用放入常量池並返回。

String拓展 intern 方法

string s1 new string 1 new string 1 s1變數記錄的位址為 new string s1.intern 在字串常量池中生成 11 如何理解 jdk6 建立了乙個新的物件 11 也就有新的位址 jdk7 此時常量池中並沒有建立 11 而是建立了乙個指向堆空間中new s...

String中intern的方法

首先檢視官方api那個的解釋 intern public stringintern 返回字串物件的規範化表示形式。乙個初始時為空的字串池,它由類 string 私有地維護。當呼叫 intern 方法時,如果池已經包含乙個等於此 string 物件的字串 該物件由 equals object 方法確定...

String中intern的方法

intern public string intern 返回字串物件的規範化表示形式。乙個初始時為空的字串池,它由類 string 私有地維護。當呼叫 intern 方法時,如果池已經包含乙個等於此 string 物件的字串 該物件由 equals object 方法確定 則返回池中的字串。否則,將...