91偷拍精品一区二区三区_欧美亚洲免费在线_日本不卡高清视频_中文字幕无码一区二区视频_日韩毛片无码一区二区三区,将夜 猫腻 小说,欢乐颂第二季,如何发布网络小说

?
    開發技術 / Technology
    您的當前位置:網站首頁 > 行業洞察 > 開發技術

    JAVA程序優化之字符串優化處理

    日期:2015年3月20日  作者:zhjw  來源:互聯網    點擊:967

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

      1.String對象及特點

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

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

      不變性;

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

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

      針對常量池的優化;

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

      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對象在常量池中的引用。

    主站蜘蛛池模板: 白山市| 会昌县| 甘孜县| 龙川县| 沙湾县| 宜丰县| 茌平县| 宁波市| 犍为县| 崇左市| 芮城县| 义乌市| 邳州市| 隆昌县| 曲阳县| 额济纳旗| 大足县| 东源县| 东乌珠穆沁旗| 福清市| 金昌市| 五大连池市| 包头市| 大同市| 石屏县| 鹿泉市| 芜湖县| 梨树县| 盐山县| 平遥县| 山丹县| 舟山市| 宝清县| 九台市| 山东| 北海市| 都兰县| 广饶县| 富顺县| 大厂| 塔城市|