1. 程式人生 > >JAVA效能優化之 String

JAVA效能優化之 String

1.String 3個基本特點,不變性、針對常量池的優化及類的final定義

2.String物件的4種建立方式:
①當時用任何方式來建立一個字串物件X時,Java執行時(執行中JVM)會拿著這個X在String池中查詢是否存在內容相同的字串物件,如果不存在,則在池中建立一個字串X,否則不會建立物件,即不會在池中新增;
②Java內部只要使用new關鍵字來建立物件,則一定會(在堆區或者棧區)建立一個新的物件;
③使用自己指定或者使用純字串串聯來建立String物件,則僅僅會檢查維護String池中的字串,池中沒有就傳教一個,如果存在,就不需要建立新的,但絕不會再堆疊區再去建立該String物件;
④使用包含變數的表示式來建立String物件,則不僅會檢查並維護String池,而且還會在堆疊區建立一個String物件。

3.String物件的SubString方法

String.substring()返回的String仍然會儲存原始的String,而重新newString構造一個僅包含截取出的字串的String可以節省記憶體。
字串擷取的效率問題:
當需要擷取的字串長度總和大於等於原始文字長度,使用String.substring()可以共享原始文字從而節省記憶體。
當需要擷取的字串長度總和遠小於原始文字長度,使用 new String(String.substring())會節省記憶體。

4.如果查詢單個字元的話,用charat()代替startwith()

5.字串相加的時候,若該字串只有一個字元的話,建議用” 代替””
String string=s+”d” >>> String string=s+’d’

6.字串切割 split方法的效率比stringtokenizer類低很多,對於需要使用indexof()和substring()這兩個方法的應用場景,也建議使用stringtokenizer代替

7.字串的合併
string物件串接 <(效率低於)concat方法連線 <使用StringBuilder類append()方法
StringBuilder總體來說優於StringBuffer。

相關推薦

JAVA效能優化 String

1.String 3個基本特點,不變性、針對常量池的優化及類的final定義 2.String物件的4種建立方式: ①當時用任何方式來建立一個字串物件X時,Java執行時(執行中JVM)會拿著這個X在String池中查詢是否存在內容相同的字串物件,如

Java 效能優化 String

一般而言,Java 物件在虛擬機器的結構如下: 物件頭(object header):8 個位元組 Java 原始型別資料:如 int, float, char 等型別的資料,各型別資料佔記憶體如 表 1. Java 各資料型別所佔記憶體. 引用(reference):4

菜鳥要做架構師——java效能優化for迴圈

完成同樣的功能,用不同的程式碼來實現,效能上可能會有比較大的差別,所以對於一些效能敏感的模組來說,對程式碼進行一定的優化還是很有必要的。今天就來說一下java程式碼優化的事情,今天主要聊一下對於for(while等同理)迴圈的優化。 作為三大結構之一的迴圈,在我們編寫程式碼的時候會經常用到。

Java效能優化JVM記憶體模型

JVM記憶體模型 首先介紹下Java程式具體執行的過程: Java原始碼檔案(.java字尾)會被Java編譯器編譯為位元組碼檔案(.class字尾); 由JVM中的類載入器載入各個類的位元組碼檔案,載入完畢之後,交由JVM執行引擎執行 在整個程式執行過程中,JVM會用==一段空間==來儲存程式執

Java效能優化作業系統層面優化

目前常用的作業系統分為:windows,Unix(Linux),我們會分別介紹在不同系統上的調優。 一,概念 效能監控:一種以非侵入方式收集或檢視應用執行效能資料的活動,通常是指在生產,質量評估, 開發環境中實施的帶有預防或主動性的活動。 效能分析:一種以侵入方式收集執行效能資料的活

Android 效能優化String

Android 效能優化之 String篇 關於String相關知識都是老掉牙的東西了,但我們經常可能在不經意的String 字串拼接的情況下浪費記憶體,影響效能,也常常會成為觸發記憶體OOM的最後一步。 所以本文對String字串進行深度解析,有

每天學點java效能優化字串處理優化

<pre code_snippet_id="1604271" snippet_file_name="blog_20160310_1_3195965" name="code" class="java"> 在java語言中,java的設計者對String物件進行

java web專案效能優化五花八門

       最近是做了半年的專案到了最後測試準備上線了,流程走通後開始做一些效能測試,在此期間做了很多效能優化的工作,在此做下筆記,分享一下。交流一下,希望同道中人有新的東西歡迎補充。在此就不做太多的具體操作,主要還是從思路上出發。       效能優化主要從幾個方面著手

Java源碼String

http協議 water isempty indexof() replace iss 數據 gate builder 本文出自:http://blog.csdn.net/dt235201314/article/details/78330377 一丶概述 還記得那會的&l

效能優化記憶體優化

效能優化之記憶體優化 計算 APP 獲得的最大記憶體分配值 Runtime rt=Runtime.getRuntime(); long maxMemory=rt.maxMemory(); Log.i("maxMemory:",Long.toString(max

Sql Sever效能優化指定索引

背景:生產環境SQL語句查詢過慢(資料總量在350萬左右),日誌中心一直報警 解決過程:分析無果後,求助於公司的DBA,DBA分析後建議在語句中指定索引 解決:在SQL語句中指定索引,效果相當明顯,親測有效 優化前SQL: SELECT ROW_NUMBER() OVER ( ORDER BY

Android——效能優化SparseArray

相信大家都用過HashMap用來存放鍵值對,最近在專案中使用HashMap的時候發現,有時候 IDE 會提示我這裡的HashMap可以用SparseArray或者SparseIntArray等等來代替。 SparseArray(稀疏陣列).它是Android內部特有的api,標準的jdk是沒有這

Android效能優化較精確的獲取影象顯示到螢幕上的時間

轉載自:http://blog.desmondyao.com/android-show-time/ 這兩天我的包工頭歪龍木·靈魂架構師·王半仙·Yrom給我派了一個活:統計App冷啟動時間。這個任務看上去不難,但是要求統計出來的時間要準,要特別準。 意思就是,我必須要按Activity繪製到

Java容器深入淺出String、StringBuffer、StringBuilder

stat throw 擴容 java 深入淺出 構造方法 world! for col 對字符串的花式處理一直是現代應用系統的主要操作之一,也是對Java基礎知識考察的重要方面。事實上,Java字符串類的底層是通過數組來實現的。具體來說,String類是固定長度的數組,St

KVM總結-KVM效能優化磁碟IO優化

前面講了KVM CPU(http://blog.csdn.net/dylloveyou/article/details/71169463)、記憶體(http://blog.csdn.net/dylloveyou/article/details/71338378)的優化,下面接著第三塊的內容,KVM磁

MySQL(三) —— MySQL效能優化 索引優化

MySQL索引優化 如何選擇合適的列建立索引? 在where從句、group by 從句、order by 從句、on 從句中出現的列 索引欄位越小越好 離散度大的列放在聯合索引的前面 如何判斷列的離散度? 去重查詢看列的唯一值,唯一值越多則離散度越大。 mysql&

MySQL(二) —— MySQL效能優化 SQL語句優化

          SQL語句優化   MySQL優化的目的   1、避免出現頁面訪問錯誤:或由於資料庫連線超時 timeout 產生頁面5xx錯誤;或由於慢查詢造成頁面無法載入;或由於阻        塞造成資料無法提交;

MySQL (一) —— MySQL效能優化 慢查詢日誌

                        &nbs

精讀《手寫 SQL 編譯器 - 效能優化快取》

1 引言 重回 “手寫 SQL 編輯器” 系列。這次介紹如何利用快取優化編譯器執行效能。 可以利用 Frist 集 與 Match 節點快取 這兩種方式優化。 本文會用到一些圖做解釋,下面介紹圖形規則: First 集優化,是指在初始化時,將整體文法的 First 集找到,因此在節點

java學習筆記String,StringBuilder和StringBuffer

String,StringBuilder和StringBuffer String是char[]+操作,由複製建立新物件進行操作,也就是char[]是不可變的,物件內容永不變。 StringBuilder是char[]+對此char[]陣列的操作,處理當前陣列不用複製重新建立,即ch