1. 程式人生 > >java基礎之字串處理總結

java基礎之字串處理總結

Java中的字串處理主要有下面三個類來處理的:StringStringBufferStringBuilder

三者區別綜述:

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