欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基礎(chǔ)類庫之StringBuffer類用法詳解

 更新時(shí)間:2022年07月26日 14:14:29   作者:樣子的木偶  
String類是在所有開發(fā)項(xiàng)目開發(fā)之中一定會(huì)使用的一個(gè)功能類。雖然String類很好用,但也有弊端——內(nèi)容不允許頻繁修改,所以為了解決問題,我們提供了StringBuffer類。本文就來講講StringBuffer類的用法

StringBuffer類

String類是在所有開發(fā)項(xiàng)目開發(fā)之中一定會(huì)使用的一個(gè)功能類,并且這個(gè)類擁有如下功能

  • 每個(gè)字符串的常量都屬于一個(gè)String類匿名對(duì)象,并且不能修改;
  • String類有兩個(gè)常量池:靜態(tài)常量池、運(yùn)行常量池;
  • String類對(duì)象實(shí)例化建議直接使用賦值的形式完成,這樣可以直接將對(duì)象保存在對(duì)象池中方便下次重用;

雖然String類很好用,但是我們發(fā)現(xiàn)它也有弊端,就是內(nèi)容不允許頻繁修改,所以為了解決問題,我們提供了StringBuffer類

StringBuffer 并不像String類那樣擁有兩種實(shí)例化方法,必須要想普通方法一樣調(diào)用方法,這個(gè)時(shí)候可以考慮一下方法

  • 構(gòu)造方法:public StringBuffer();
  • 數(shù)據(jù)追加:public StringBuffer append(數(shù)據(jù)類型、變量),相當(dāng)于字符串中的“+”操作;
  • 構(gòu)造方法:public StringBuffer(String str),相當(dāng)于初始化

范例:觀察String與StringBuffer對(duì)比

String類對(duì)象引用傳遞

public class JavaAPIDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str ="hello";
		change(str);
		System.out.println(str);
	}
	public static void change(String temp) {
		temp+="word";
	}

}

str內(nèi)的值沒有發(fā)生改變

StringBuffer類對(duì)象引用傳遞

public class JavaAPIDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer buf =new StringBuffer("Hello  ");
		change(buf);
		System.out.println(buf);
	}
	public static void change(StringBuffer temp) {
		temp.append("World");
	}

}

buf內(nèi)的值發(fā)生了改變

由此可見String內(nèi)的值不能改變,StringBuffer內(nèi)的值可以改變,這就是兩這最主要的區(qū)別

實(shí)際上大部分的情況下,很少會(huì)出現(xiàn)有字符串內(nèi)容的改變,這種改變指的并不是針對(duì)靜態(tài)常量池的改變;

范例:分析一下已有問題

public class JavaAPIDemo {

	public static void main(String[] args) {
	String strA="www.baidu.com";
	String strB="www."+"baidu."+"com";
	System.out.println(strA==strB);
	}

}

在這個(gè)時(shí)候strB對(duì)象里面的內(nèi)容并不是真正改變,或者更嚴(yán)格的將,對(duì)于現(xiàn)在的strB當(dāng)程序編譯的時(shí)候就相當(dāng)于下面形式

buf.append(“www.”).append(“baidu.”).append(“com”);

也就是說所有的”+“在我們編譯后都變?yōu)榱薙tringBuffer中的append()方法,并且在程序中String類對(duì)象和StringBuffer類對(duì)象本來就可以互相轉(zhuǎn)換

  • String類對(duì)象變?yōu)镾tringBuferr可以依靠StringBuffer類構(gòu)造方法或者使用append()方法
  • 所以類的對(duì)象都可以通過toString()方法將其變?yōu)镾tring類型

在StringBuffer類里面除了可以支持字符串內(nèi)容修改之外,實(shí)際上也添加了很多String所不具有的方法

public class JavaAPIDemo {

	public static void main(String[] args) {
	
	StringBuffer buf=new StringBuffer();
	buf.append(".com").insert(0,"www.").insert(4, "baidu");
	System.out.println(buf);
	}

}

刪除指定范圍的數(shù)據(jù):public StringBuffer delete(int start,int end);

public class JavaAPIDemo {

	public static void main(String[] args) {
	
	StringBuffer buf=new StringBuffer();
	buf.append("Hello World!").delete(6, 12);
	System.out.println(buf);
	}

}

-字符串內(nèi)容反轉(zhuǎn):public StringBuffer reverse();

public class JavaAPIDemo {

	public static void main(String[] args) {
	
	StringBuffer buf=new StringBuffer();
	buf.append("Hello World!");
	System.out.println(buf.reverse());
	}

}

實(shí)際上與StringBuffer類還有一個(gè)類似的功能類:StringBuilder類,這個(gè)類是在JDK1.5之后提供的,該類中提供的方法與StringBuffer類相同,區(qū)別在于StringBuffer類中的方法屬于線程安全的,全都使用了synchronized關(guān)鍵字進(jìn)行標(biāo)注,而StringBuilder類屬于非線程安全的

面試題:請(qǐng)解釋String、StringBuffer、StringBuilder的主要區(qū)別?

String類是字符串的首選類型,其最大的特點(diǎn)是內(nèi)容不允許修改;

StringBuffer與StringBuilder類的內(nèi)容允許修改;

StringBuffer是在JDK1.0的時(shí)候提供的,屬于線程安全操作,而StringBuilder是在JDK1.5的時(shí)候提供的不是線程安全操作

到此這篇關(guān)于Java基礎(chǔ)類庫之StringBuffer類用法詳解的文章就介紹到這了,更多相關(guān)Java StringBuffer類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • @Autowired注入為null問題原因分析

    @Autowired注入為null問題原因分析

    這篇文章主要介紹了@Autowired注入為null問題原因分析嗎,小編覺得挺不錯(cuò)的,對(duì)日后比較有幫助,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則介紹

    Java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則介紹

    迪米特法則解決類與類之間耦合度問題,如果類A調(diào)用了B類的某一個(gè)方法,則這兩個(gè)類就形成了一種緊耦合的方式,當(dāng)B類這個(gè)方法發(fā)生變化時(shí),一定會(huì)影響A類的執(zhí)行結(jié)果。迪米特法則要求每一個(gè)類盡可能少的與其他類發(fā)生關(guān)系
    2023-02-02
  • 使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼

    使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼

    這篇文章主要介紹了使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼,主要基于JWT的身份認(rèn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 深入了解Java核心類庫--BigDecimal和System類

    深入了解Java核心類庫--BigDecimal和System類

    這篇文章主要為大家詳細(xì)介紹了javaBigDecimal和System類定義與使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • Mybatis 條件查詢 批量增刪改查功能

    Mybatis 條件查詢 批量增刪改查功能

    這篇文章主要介紹了mybatis 腳本處理語句之條件查詢 批量增刪改查功能,需要的的朋友參考下吧
    2017-06-06
  • Servlet實(shí)現(xiàn)點(diǎn)擊計(jì)數(shù)器的方法

    Servlet實(shí)現(xiàn)點(diǎn)擊計(jì)數(shù)器的方法

    這篇文章主要介紹了Servlet實(shí)現(xiàn)點(diǎn)擊計(jì)數(shù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Mybatis一對(duì)多與多對(duì)一查詢處理詳解

    Mybatis一對(duì)多與多對(duì)一查詢處理詳解

    這篇文章主要給大家介紹了關(guān)于Mybatis一對(duì)多與多對(duì)一查詢處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • springboot如何實(shí)現(xiàn)前后端分離跨域訪問

    springboot如何實(shí)現(xiàn)前后端分離跨域訪問

    這篇文章主要介紹了springboot如何實(shí)現(xiàn)前后端分離跨域訪問問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Jdbctemplate多數(shù)據(jù)源配置方法詳解

    Jdbctemplate多數(shù)據(jù)源配置方法詳解

    這篇文章主要介紹了Jdbctemplate多數(shù)據(jù)源配置方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java中基于maven實(shí)現(xiàn)zxing二維碼功能

    Java中基于maven實(shí)現(xiàn)zxing二維碼功能

    這篇文章主要介紹了Java中基于maven實(shí)現(xiàn)zxing二維碼功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02

最新評(píng)論