成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java學習(六) —— java中String和StringBuffer的區(qū)別

Paul_King / 711人閱讀

摘要:中有三個類可以對字符進行操作是進行單個字符操作的類。類中的方法偏重于對字符串的變化,例如追加插入和刪除等,這個也是和類的主要區(qū)別。類屬于一種輔助類,可預先分配指定長度的內(nèi)存塊建立一個字符串緩沖區(qū)。

前言

String和StringBuffer都是java中關(guān)于字符操作的類

尤其String,經(jīng)常看到類似這樣的賦值代碼 String str = "Hello World",看起來就好像int一樣以為是java的基本數(shù)據(jù)類型,其實不是,String是一個類,是一個特殊的類,可以像基本數(shù)據(jù)類型一樣直接賦值。

java中有三個類可以對字符進行操作:

(1)Character 是進行單個字符操作的類。
(2)String 對一串字符進行操作的不可變類。
(3)StringBuffer 也是對一串字符進行操作,但是可變類。

Java中String和StringBuffer類區(qū)別

StringBuffer對象的內(nèi)容可以修改;而String對象一旦產(chǎn)生后就不可以被修改,重新賦值,其實是兩個對象。

String是對象,不是原始類型;為不可變對象,一旦被創(chuàng)建,就不能修改其值。

對于已經(jīng)存在的String對象的修改,實際上是重新創(chuàng)建一個新的對象,然后把新的值保存進去。

String是final類,不能被繼承。

StringBuffer是一個可變對象,當對它修改的時候,不會像String那樣重新建立對象,它只能通過構(gòu)造函數(shù)來建立。對象被創(chuàng)立后,會分配內(nèi)存空間,并初始保存一個null。向StringBuffer中賦值的時候,可以通過它的append方法:obj.append("hello");

字符串連接操作中StringBuffer的效率比String高。

如果程序中需要對字符串進行頻繁的修改連接操作的話,使用StringBuffer性能會更高。

在String類中,沒有用來改變已有字符串中的某個字符的方法,由于不能改變一個java字符串中的某個多帶帶字符,所以在JDK文檔中稱String類的對象是不可改變的。

然而,不可變的字符串具有一個很大的優(yōu)點:編譯器可以把字符串設置為共享的。

StringBuffer是線程安全的,在多線程程序中也可以很方便的進行使用,但是程序執(zhí)行效率相對來說就要稍微慢一些。

StringBuffer類中的方法偏重于對字符串的變化,例如追加、插入和刪除等,這個也是StringBuffer和String類的主要區(qū)別。

String與StringBuffer連接字符串比較

String str = new String("Hello World");str += "hello world"; 此字符串連接的處理過程:

(1)建立一個StringBuffer;
(2)調(diào)用append()方法;
(3)最后StringBuffer調(diào)用toString()給String重新賦值
(4)這樣看來,String的連接操作,比StringBuffer多了一些操作,效率上就會打折扣。
(5)并且,由于String是不可變對象,每次重新賦值都會重新創(chuàng)建新的對象,那么原來的對象就沒用了,就要被垃圾回收,也影響性能。

StringBuffer類屬于一種輔助類,可預先分配指定長度的內(nèi)存塊建立一個字符串緩沖區(qū)。這樣使用StringBuffer類的append方法追加字符,比String使用“+”操作符添加字符到一個已經(jīng)存在的字符串后面有效率的多。

使用“+”操作符每一次將字符添加到一個字符串中去時,字符串對象都需要尋找一個新的內(nèi)存空間來容納更大的字符串,這無疑是一個非常消耗時間的操作。添加多個字符就意味著要一次又一次的的對字符串重新分配內(nèi)存。使用StringBuffer就避免了這個問題。

參考鏈接

https://www.cnblogs.com/fguoz...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77018.html

相關(guān)文章

  • StringBuffer StringBuilder 3 個區(qū)別

    摘要:和它們都是可變的字符串,不過它們之間的區(qū)別是初中級面試出現(xiàn)幾率十分高的一道題。區(qū)別線程安全線程安全,線程不安全。區(qū)別性能既然是線程安全的,它的所有公開方法都是同步的,是沒有對方法加鎖同步的,所以毫無疑問,的性能要遠大于。 StringBuffer 和 StringBuilder 它們都是可變的字符串,不過它們之間的區(qū)別是 Java 初中級面試出現(xiàn)幾率十分高的一道題。這么簡單的一道題,棧...

    ranwu 評論0 收藏0
  • Java學習筆記3-Number,String,StringBuilder類

    摘要:創(chuàng)建字符串教程字符串長度用于獲取有關(guān)對象的信息的方法稱為訪問器方法。類在中被提出,它和之間的最大不同在于的方法不是線程安全的不能同步訪問。然而在應用程序要求線程安全的情況下,則必須使用類。 一般地,當需要使用數(shù)字的時候,我們通常使用內(nèi)置數(shù)據(jù)類型,如:byte、int、long、double 等。 在實際開發(fā)過程中,我們經(jīng)常會遇到需要使用對象,而不是內(nèi)置數(shù)據(jù)類型的情形。為了解決這個問題,...

    pkhope 評論0 收藏0
  • 這些Java面試題必須會-----魯迅

    摘要:事實上,所謂的同步就是指阻塞式操作,而異步就是非阻塞式操作。中可以通過設值注入方法注入和構(gòu)造器注入實現(xiàn),推薦使用的方式為設值注入。 寫在前面 春天來了,萬物復蘇的季節(jié)到了. 許多程序猿安奈不住生理需求,我要漲工資,我要跳槽. 畢竟金三銀四嘛. 那么要從眾多的面試者中獲得求職機會,我們就要面對很多的面試題. 程序猿是最煩面試題的.面試的公司也煩,面試的人也煩. 但是沒辦法.面試的人魚龍混...

    aristark 評論0 收藏0
  • 為什么不建議在for循環(huán)使用"+"進行字符串拼接

    摘要:使用可以方便的對字符串進行拼接。該方法使用進行聲明,說明是一個線程安全的方法。所以,阿里巴巴開發(fā)手冊建議循環(huán)體內(nèi),字符串的連接方式,使用的方法進行擴展。但是,還要強調(diào)的是如果不是在循環(huán)體中進行字符串拼接的話,直接使用就好了。 摘要: 學習阿里巴巴Java開發(fā)手冊。 原文:為什么阿里巴巴不建議在for循環(huán)中使用+進行字符串拼接 微信公眾號:Hollis Fundebug經(jīng)授權(quán)轉(zhuǎn)載,...

    caoym 評論0 收藏0
  • 最最最常見Java面試題總結(jié)——第二周

    摘要:與都繼承自類,在中也是使用字符數(shù)組保存字符串,,這兩種對象都是可變的。采用字節(jié)碼的好處語言通過字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語言執(zhí)行效率低的問題,同時又保留了解釋型語言可移植的特點。 String和StringBuffer、StringBuilder的區(qū)別是什么?String為什么是不可變的? String和StringBuffer、StringBuilder的區(qū)別 可變性...

    yearsj 評論0 收藏0

發(fā)表評論

0條評論

Paul_King

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<