摘要:中有三個類可以對字符進行操作是進行單個字符操作的類。類中的方法偏重于對字符串的變化,例如追加插入和刪除等,這個也是和類的主要區別。類屬于一種輔助類,可預先分配指定長度的內存塊建立一個字符串緩沖區。
前言
String和StringBuffer都是java中關于字符操作的類
尤其String,經常看到類似這樣的賦值代碼 String str = "Hello World",看起來就好像int一樣以為是java的基本數據類型,其實不是,String是一個類,是一個特殊的類,可以像基本數據類型一樣直接賦值。
java中有三個類可以對字符進行操作:
(1)Character 是進行單個字符操作的類。 (2)String 對一串字符進行操作的不可變類。 (3)StringBuffer 也是對一串字符進行操作,但是可變類。Java中String和StringBuffer類區別
StringBuffer對象的內容可以修改;而String對象一旦產生后就不可以被修改,重新賦值,其實是兩個對象。
String是對象,不是原始類型;為不可變對象,一旦被創建,就不能修改其值。
對于已經存在的String對象的修改,實際上是重新創建一個新的對象,然后把新的值保存進去。
String是final類,不能被繼承。
StringBuffer是一個可變對象,當對它修改的時候,不會像String那樣重新建立對象,它只能通過構造函數來建立。對象被創立后,會分配內存空間,并初始保存一個null。向StringBuffer中賦值的時候,可以通過它的append方法:obj.append("hello");
字符串連接操作中StringBuffer的效率比String高。
如果程序中需要對字符串進行頻繁的修改連接操作的話,使用StringBuffer性能會更高。
在String類中,沒有用來改變已有字符串中的某個字符的方法,由于不能改變一個java字符串中的某個多帶帶字符,所以在JDK文檔中稱String類的對象是不可改變的。
然而,不可變的字符串具有一個很大的優點:編譯器可以把字符串設置為共享的。
StringBuffer是線程安全的,在多線程程序中也可以很方便的進行使用,但是程序執行效率相對來說就要稍微慢一些。
StringBuffer類中的方法偏重于對字符串的變化,例如追加、插入和刪除等,這個也是StringBuffer和String類的主要區別。
String與StringBuffer連接字符串比較
String str = new String("Hello World");str += "hello world"; 此字符串連接的處理過程:
(1)建立一個StringBuffer; (2)調用append()方法; (3)最后StringBuffer調用toString()給String重新賦值 (4)這樣看來,String的連接操作,比StringBuffer多了一些操作,效率上就會打折扣。 (5)并且,由于String是不可變對象,每次重新賦值都會重新創建新的對象,那么原來的對象就沒用了,就要被垃圾回收,也影響性能。
StringBuffer類屬于一種輔助類,可預先分配指定長度的內存塊建立一個字符串緩沖區。這樣使用StringBuffer類的append方法追加字符,比String使用“+”操作符添加字符到一個已經存在的字符串后面有效率的多。
使用“+”操作符每一次將字符添加到一個字符串中去時,字符串對象都需要尋找一個新的內存空間來容納更大的字符串,這無疑是一個非常消耗時間的操作。添加多個字符就意味著要一次又一次的的對字符串重新分配內存。使用StringBuffer就避免了這個問題。
參考鏈接https://www.cnblogs.com/fguoz...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77018.html
摘要:和它們都是可變的字符串,不過它們之間的區別是初中級面試出現幾率十分高的一道題。區別線程安全線程安全,線程不安全。區別性能既然是線程安全的,它的所有公開方法都是同步的,是沒有對方法加鎖同步的,所以毫無疑問,的性能要遠大于。 StringBuffer 和 StringBuilder 它們都是可變的字符串,不過它們之間的區別是 Java 初中級面試出現幾率十分高的一道題。這么簡單的一道題,棧...
摘要:創建字符串教程字符串長度用于獲取有關對象的信息的方法稱為訪問器方法。類在中被提出,它和之間的最大不同在于的方法不是線程安全的不能同步訪問。然而在應用程序要求線程安全的情況下,則必須使用類。 一般地,當需要使用數字的時候,我們通常使用內置數據類型,如:byte、int、long、double 等。 在實際開發過程中,我們經常會遇到需要使用對象,而不是內置數據類型的情形。為了解決這個問題,...
摘要:事實上,所謂的同步就是指阻塞式操作,而異步就是非阻塞式操作。中可以通過設值注入方法注入和構造器注入實現,推薦使用的方式為設值注入。 寫在前面 春天來了,萬物復蘇的季節到了. 許多程序猿安奈不住生理需求,我要漲工資,我要跳槽. 畢竟金三銀四嘛. 那么要從眾多的面試者中獲得求職機會,我們就要面對很多的面試題. 程序猿是最煩面試題的.面試的公司也煩,面試的人也煩. 但是沒辦法.面試的人魚龍混...
摘要:使用可以方便的對字符串進行拼接。該方法使用進行聲明,說明是一個線程安全的方法。所以,阿里巴巴開發手冊建議循環體內,字符串的連接方式,使用的方法進行擴展。但是,還要強調的是如果不是在循環體中進行字符串拼接的話,直接使用就好了。 摘要: 學習阿里巴巴Java開發手冊。 原文:為什么阿里巴巴不建議在for循環中使用+進行字符串拼接 微信公眾號:Hollis Fundebug經授權轉載,...
摘要:與都繼承自類,在中也是使用字符數組保存字符串,,這兩種對象都是可變的。采用字節碼的好處語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。 String和StringBuffer、StringBuilder的區別是什么?String為什么是不可變的? String和StringBuffer、StringBuilder的區別 可變性...
閱讀 2224·2019-08-30 15:53
閱讀 2452·2019-08-30 12:54
閱讀 1197·2019-08-29 16:09
閱讀 728·2019-08-29 12:14
閱讀 754·2019-08-26 10:33
閱讀 2481·2019-08-23 18:36
閱讀 2959·2019-08-23 18:30
閱讀 2118·2019-08-22 17:09