国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Paul_King / 702人閱讀

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

前言

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

尤其String,經(jīng)??吹筋愃七@樣的賦值代碼 String str = "Hello World",看起來就好像int一樣以為是java的基本數(shù)據(jù)類型,其實(shí)不是,String是一個(gè)類,是一個(gè)特殊的類,可以像基本數(shù)據(jù)類型一樣直接賦值。

java中有三個(gè)類可以對(duì)字符進(jìn)行操作:

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

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

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

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

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

String是final類,不能被繼承。

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

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

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

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

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

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

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

String與StringBuffer連接字符串比較

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

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

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

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

參考鏈接

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77018.html

相關(guān)文章

  • StringBuffer StringBuilder 3 個(gè)區(qū)別

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

    ranwu 評(píng)論0 收藏0
  • Java學(xué)習(xí)筆記3-Number,String,StringBuilder類

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

    pkhope 評(píng)論0 收藏0
  • 這些Java面試題必須會(huì)-----魯迅

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

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

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

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

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

    yearsj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Paul_King

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<