java基礎之字串處理總結
Java中的字串處理主要有下面三個類來處理的:String、StringBuffer、StringBuilder。
三者區別綜述:
1,String、StringBuffer、StringBuilder都是被final修飾的,是不能夠被繼承改寫的。
2,String在例項化之後,其記憶體空間的內容大小是不能夠被修改的;而StringBuffer是一個執行緒安全的可變字元序列,在例項化之後可以動態的修改堆記憶體中的內容,所以記憶體長度和大小是可變的;StringBuilder例項化之後記憶體大小長度也是可變的,不
同之處在於StringBuilder不是執行緒同步,因此操作起來必然比StringBuffer更加高效。
三者區別詳細分析:
例子:
String str = "hello";
str += "world";
上述程式碼在記憶體中已經開闢了3個空間,分別是:”hello“, ”world“, ”helloworld“,他們的堆記憶體大小是固定的,最終str指向了”helloworld“的堆地址。如下圖所示:
而StringBuffer使用時,只會開闢一塊記憶體空間,可以使用append新增delete等操作內容。
String有一個特殊之處:
構造String物件時可以使用new構造也可以使用"hello"直接構造。中兩種方法推薦使用第二種。
圖示如下:
1、 String a= new String("hello");
2、String a = "hello";
解釋如下:
1:在棧記憶體重定義了一個a物件引用,先指向堆記憶體值為“hello”記憶體地址,然後又指向new之後堆記憶體為“hello”的地址。最終開闢了兩個空間,第一個空間沒有物件引用,會被JVM垃圾回收。
2:在棧記憶體中定義了一個a物件引用,指向堆記憶體的值“hello”記憶體地址。最終開闢了一個記憶體空間
3:需要注意到是==與equals的用法
String a = "111";
String b = "111";
System.out.print(a==b);
System.out.print(a.equals(b));
String c = new String("222");
String d = new String("222");
System.out.print(c==d);
System.out.print(c.equals(d));
結果是:true true false true
三者使用說明:
String 每次生成物件都會對系統性能產生影響,特別當記憶體中無引用物件多了以後, JVM 的 GC 就會開始工作,那速度是一定會相當慢的。 而如果是使用 StringBuffer/StringBuilder 類則結果就不一樣了,每次結果都會對 StringBuffer/StringBuilder 物件本身進行操作,而不是生成 新的物件,再改變物件引用。
因而在對一個字串迴圈賦值時,最好使用StringBuffer(原始碼中各種使用synchronized)或StringBuilder(執行緒不安全),這樣可以節約記憶體,提高效能,切記。
總結:
1.如果要操作少量的資料用 = String
2.單執行緒操作字串緩衝區 下操作大量資料 = StringBuilder
3.多執行緒操作字串緩衝區 下操作大量資料 = StringBuffer
相關推薦
java基礎之字串處理總結
Java中的字串處理主要有下面三個類來處理的:String、StringBuffer、StringBuilder。三者區別綜述:1,String、StringBuffer、StringBuilder都是
Java基礎之字串陣列Array進行去重
寫出一段演算法,用於對字串陣列進行去重,要求儘量簡潔 舉例: * 輸入: * {"cc","dd","aa","cc","gg","dd","ee"} * 輸出: * {"cc","dd","aa","gg","ee"} ArrayList去重 通過list.contains()
Java基礎之字串常量
字串常量用於表示一串連續的字元,一個字串常量要用一對英文半形格式的雙引號(" ")引起來。 "HelloWorld" "123" "Welcome \m XXX" "" 一個字串可以包含一個字元或多個字元,也可以不包含任何字元,即長度為零。 本資源用於文章http
JAVA基礎之異常處理
我們在程式執行的過程中出現錯誤時很正常的,出錯,我們的程式碼執行就會停止,那麼我們可以使用異常處理來幫助程式設計師檢查可能出現的問題。 1.java中異常的分類,分為:java.lang.Error和java.lang.Exception,java.lang.Throwable類是兩種的父類
Java基礎之字串的編碼(Encode)和解碼(Decode)
package newFeatures8; import java.io.UnsupportedEncodingException; import java.util.Arrays; /*
Java基礎之----異常處理(1.7以上)
什麼是異常 異常是在程式執行過程中發生的,中斷程式正常執行流程的事件.Exception是exceptional event的簡稱java程式語言用異常來處理錯誤和其他異常事件。 處理過程 當在一個方法執行過程中發生一個異常,這個方法會建立一個異常物件,並把發這個物件
Java基礎之String 是否包含該字串,使用 contains 和 indexOf 的區別
判斷該字串是否包含某個字串: 1、一般會用到String的contains,如果包含則返回true,否則返回false。 @Test public void contains_Test() { String one = "a"; String two = "abc"; System.o
java基礎之String字串操作
1.length()獲取字串長度String str="abc"; System.out.println(str.length());輸出結果:32.charAt()按照索引值獲得字串中的指定字元(java中第一個字元索引值為0)String str = "123456789
Java基礎之String中equals,宣告方式,等大總結
無論你是一個程式設計新手還是老手,提到String你肯定感覺特別熟悉,因為String類我們在學習java基礎的時候就已經學過,但是String型別有我們想象的那麼簡單嗎?其實不然,Stri
Java基礎之引用(String,char[],Integer)總結於牛客網的專項練習題
1、String的引用:下列程式碼執行後的結果為:public class Test { public static void main(String[] args) { StringBuffe
每天學點java效能優化之字串處理優化
<pre code_snippet_id="1604271" snippet_file_name="blog_20160310_1_3195965" name="code" class="java"> 在java語言中,java的設計者對String物件進行
java基礎之連線關閉處理——try-with-resource程式碼塊
try-with-resource——優雅的處理資源關閉問題 我們都知道,對於資源來的連線,比如資料庫連線,檔案輸入輸出流等,不管是正常執行完成還是在執行過程中出現了異常,都需要對我們使用的資源進行釋放,在JAVA7以前,可以使用try-catch-finall
java基礎之多線程
健壯性 等待 block running 調用 相同 空間 獲取 行程 參考博客 http://www.mamicode.com/info-detail-517008.html 1.進程和線程的區別 進程:每個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換會有
Python 基礎之 異常處理
判斷 簡單 不讓 tor pen opened 分支結構 子類 inpu python 基礎之異常處理 說到異常處理,就得先問一下,什麽是異常處理? 先來看一下,什麽是異常? 異常就是:程序運行時發出的錯誤的信號。 異常的種類先來看一下: 一、常見的異常
java基礎之數組
和平 system.in return 必須 sys jdk ole 否則 語法 1、數組的定義 數組是相同數據類型的有序集合,數組是一種特殊類型的變量,是在內存中開辟的一片連續的存儲空間 數組的元素:數組中的保存的具體的值 數組的長度:數組中能保存的最大得元素的個數。 數
Java基礎概念性的知識總結
java開發 本地 關註 不包含 ava jre 操作 kit 計算機 屬於個人的所學的知識總結,不是全面的 1.JDK、JRE和JVM三者的區別 01.JDK:(Java Development ToolKit)Java開發工具包,是整個Java的核心。包括了Java
java基礎之bit、byte、char、String
ava 字節 java基礎 等於 ring pan style span gbk bit 位,二進制數據0或1 byte 字節,一個字節等於8位二進制數 char 字符, String 字符串,一串字符 常見轉換 1 字母 = 1by
java基礎之get和post的差別
oge tracking data- 宋體 行處理 art 其它 family 我們 上篇博文講到HTTP協議,本篇介紹HTTP請求方法中get和post的差別: 首先,最明顯的一點表象上的差別:GET 方式。將請求參數附加在url之後,POST將請求參數附加在請求頭
Java基礎之final和static關鍵字
推薦 構造方法 其他 如果 靈活 位置 map 機制 lis 一、final 根據程序上下文環境,它可以修飾非抽象類、非抽象類成員方法和變量。 final類不能被繼承,沒有子類,final類中的方法默認是final的。 final
Java基礎之Map的遍歷
print try main map.entry void clas 推薦 highlight col 遍歷Map集合,有四種方法: public static void main(String[] args) { Map<String, String&g