string s1 = new string("1") + new string("1");//s1變數記錄的位址為:new string
s1.intern();//在字串常量池中生成"11"。如何理解:jdk6:建立了乙個新的物件"11",也就有新的位址;jdk7:此時常量池中並沒有建立"11",而是建立了乙個指向堆空間中new string("11")的位址;
string s2 = "11";
system.out.println(s1 == s2);//jdk6:false;jdk7:true
總結string中intern()方法的使用:
jdk6中:
將這個字串常量池嘗試放入字串常量池。
如果常量池中有,則不會方法。返回已有的常量池中物件的位址;
如果沒有,會把此物件複製乙份,放入串池,並返回串池中的物件位址;
jdk7中:
將這個字串常量池嘗試放入字串常量池。
如果常量池中有,並不會放入。返回已有的常量池中的物件的位址;
如果沒有,會把物件的引用位址複製乙份,放入常量池,並返回常量池中的引用位址;
String用於提公升效能的intern 方法
jdk每次公升級都會做很多優化,我們使用最多的string常量類也在不斷被優化。這次和大家分享的是jdk1.8中對string的優化之一,intern 方法的使用。對應的方法及注釋如下 一句話概括,就是通過常量池復用來節省記憶體空間 減少開銷以提公升效能。tips 這裡簡單介紹一下常量池,方便下文理...
String中intern的方法
首先檢視官方api那個的解釋 intern public stringintern 返回字串物件的規範化表示形式。乙個初始時為空的字串池,它由類 string 私有地維護。當呼叫 intern 方法時,如果池已經包含乙個等於此 string 物件的字串 該物件由 equals object 方法確定...
String中intern的方法
intern public string intern 返回字串物件的規範化表示形式。乙個初始時為空的字串池,它由類 string 私有地維護。當呼叫 intern 方法時,如果池已經包含乙個等於此 string 物件的字串 該物件由 equals object 方法確定 則返回池中的字串。否則,將...