最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基礎類庫之StringBuffer類用法詳解

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

StringBuffer類

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

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

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

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

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

范例:觀察String與StringBuffer對比

String類對象引用傳遞

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內的值沒有發(fā)生改變

StringBuffer類對象引用傳遞

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內的值發(fā)生了改變

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

實際上大部分的情況下,很少會出現有字符串內容的改變,這種改變指的并不是針對靜態(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);
	}

}

在這個時候strB對象里面的內容并不是真正改變,或者更嚴格的將,對于現在的strB當程序編譯的時候就相當于下面形式

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

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

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

在StringBuffer類里面除了可以支持字符串內容修改之外,實際上也添加了很多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);
	}

}

刪除指定范圍的數據: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);
	}

}

-字符串內容反轉: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());
	}

}

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

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

String類是字符串的首選類型,其最大的特點是內容不允許修改;

StringBuffer與StringBuilder類的內容允許修改;

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

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

相關文章

  • Java詳細分析String類與StringBuffer和StringBuilder的使用方法

    Java詳細分析String類與StringBuffer和StringBuilder的使用方法

    當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder類,和String類不同的是,StringBuffer和 StringBuilder類的對象能夠被多次的修改,并且不產生新的未使用對象
    2022-04-04
  • 基于Redisson實現注解式分布式鎖的示例代碼

    基于Redisson實現注解式分布式鎖的示例代碼

    這篇文章主要為大家詳細介紹了如何基于Redisson實現注解式分布式鎖,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以了解一下
    2023-07-07
  • Springboot jpa @Column命名大小寫問題及解決

    Springboot jpa @Column命名大小寫問題及解決

    這篇文章主要介紹了Springboot jpa @Column命名大小寫問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • MapReduce實現TopN效果示例解析

    MapReduce實現TopN效果示例解析

    這篇文章主要為大家介紹了MapReduce實現TopN效果示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java如何處理json字符串value多余雙引號

    Java如何處理json字符串value多余雙引號

    這篇文章主要介紹了Java如何處理json字符串value多余雙引號,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • mybatis查詢結果返回至實體類的示例代碼

    mybatis查詢結果返回至實體類的示例代碼

    這篇文章主要介紹了mybatis查詢結果返回至實體類的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • SpringBoot中關于static和templates的注意事項以及webjars的配置

    SpringBoot中關于static和templates的注意事項以及webjars的配置

    今天小編就為大家分享一篇關于SpringBoot中關于static和templates的注意事項以及webjars的配置,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java?鏈表實戰(zhàn)真題訓練

    Java?鏈表實戰(zhàn)真題訓練

    跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現質的變化
    2022-04-04
  • Spring如何根據條件創(chuàng)建bean,@Conditional注解使用方式

    Spring如何根據條件創(chuàng)建bean,@Conditional注解使用方式

    這篇文章主要介紹了Spring如何根據條件創(chuàng)建bean,@Conditional注解使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • SparkSQL快速入門教程

    SparkSQL快速入門教程

    Spark?SQL是Spark用于結構化數據(structured?data)處理的Spark模塊,今天通過本文給大家介紹SparkSQL快速入門教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-02-02

最新評論

鹿邑县| 邻水| 安平县| 汤原县| 阿拉善盟| 深水埗区| 墨竹工卡县| 当雄县| 鄯善县| 白水县| 岐山县| 肥西县| 赤峰市| 井冈山市| 东明县| 碌曲县| 凤凰县| 青浦区| 迭部县| 元氏县| 大埔县| 聂拉木县| 肥西县| 平湖市| 隆子县| 永吉县| 漠河县| 瑞安市| 郸城县| 淮滨县| 衡山县| 巫山县| 龙川县| 泰和县| 澄江县| 武山县| 筠连县| 吉安县| 张家川| 环江| 四川省|