• <th id="kadjp"></th>

            1. ?
                開發(fā)技術 / Technology

                JAVA程序優(yōu)化之字符串優(yōu)化處理

                日期:2015年3月20日  作者:zhjw  來源:互聯(lián)網    點擊:732

                字符串是軟件開發(fā)中最為重要的對象之一。通常,字符串對象或其等價對象(如char數(shù)組),在內存中總是占據了最大的空間塊。因此如何高效地處理字符串,必將是提高系統(tǒng)整體性能的關鍵所在。

                  1.String對象及特點

                  String對象是Java語 言中重要的數(shù)據類型,但它并不是Java的基本數(shù)據類型。在C語言中,對字符串的處理最通常的做法是使用char數(shù)組,但這種方式的弊端是顯而易見的,數(shù) 組本身無法封裝字符串操作所需的基本方法。而在Java語言中,String對象可以認為是char數(shù)組的延伸和進一步封裝。Java中String類, 它注意由3部分組成:char數(shù)組,offset偏移量,String的長度。char數(shù)組表示String的內容,它是String對象所表示字符串的 超集。String的真實內容還需要由偏移量和長度在這個char數(shù)組中進行定位和截取。理解這點很重要,這將有助于更好地了解后面闡述的有關 String.subString()方法導致的內存泄漏問題。

                  在Java中,Java的設計者對String對象進行了大量的優(yōu)化,其主要表現(xiàn)在一下三個方面,同時這也是String對象的三個基本特點:

                  不變性;

                  不變性是指String對象一旦生成,則不能再對它進行改變。String的這個特征可以泛化成不變模式,即一個對象的狀態(tài)在對象被創(chuàng)建之后就不再發(fā)生變化。不變模式的主要作用在于當一個對象需要被多線程共享,并且訪問頻繁時,可以省略同步和鎖等待的時間,從而大幅度提高系統(tǒng)性能。

                  ps:不變模式是一個可以提高多線程程序的性能,降低多線程程序復雜度的設計模式。

                  針對常量池的優(yōu)化;

                  針對常量池的優(yōu)化指:當2個String對象擁有相同的值時,他們只引用常量池中的同一個拷貝。當同一個字符串反復出現(xiàn)時,這個技術可以大幅度節(jié)省內存空間。

                  String str1="abc";

                  String str2="abc";

                  String str3=new String("abc");

                  System.out.println(str1==str2);   //返回true

                  System.out.println(str1==str3);   //返回false

                  System.out.println(str1==str3.intern());   //返回true

                  以上代碼顯示str1和str2引用了相同的地址,但是str3卻重新開辟了一塊內存空間,但即便如此,str3在常量池的位置和str1是一 樣的,也就是說,雖然str3單獨占用了堆空間,但是它指向的實體和str1完全一樣。以上示例代碼中,最后一行使用intern()方法,該方法返回了 String對象在常量池中的引用。

                国产欧美在线观看,国产精品白浆冒出视频,91精品国产91热久久久福利,大伊香蕉在线精品视频97 国产精品美女久久福利 国产精品黄的免费观看
              • <th id="kadjp"></th>