国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java基礎(chǔ)教程】(三十三)常用類庫篇 · 第三講:可變字符串支持類——解析 StringBuffer與 StringBuilder類~

這篇具有很好參考價值的文章主要介紹了【Java基礎(chǔ)教程】(三十三)常用類庫篇 · 第三講:可變字符串支持類——解析 StringBuffer與 StringBuilder類~。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Java基礎(chǔ)教程】(三十三)常用類庫篇 · 第三講:可變字符串支持類——解析 StringBuffer與 StringBuilder類~,# Java基礎(chǔ)教程,java,jvm,開發(fā)語言,后端,程序人生

1?? StringBuffer類

1.1 概念

在Java 中,字符串使用 String 類進(jìn)行表示,但是 String 類所表示的字符串有一個最大的問題:“字符串常量一旦聲明則不可改變,而字符串對象可以改變,但是 改變的是其內(nèi)存地址的指向”。所以String類不適合于被頻繁修改的字符串操作, 所以在這種情況下,往往可以使用 StringBuffer 或者StringBuilder類,即 StringBuffer 類或者StringBuilder類更方便用戶進(jìn)行內(nèi)容的修改。

String 類中使用 “+” 作為數(shù)據(jù)庫的連接操作,而在 StringBuffer類中使用 append() 方法進(jìn)行數(shù)據(jù)的連接。方法定義:

public StringBuffer append(數(shù)據(jù) 類型變量);
//	范例 1: 觀察StringBuffer 基本使用
package com.xiaoshan.demo;

public class TestDemo {
	public static void main(String[] args) throws Exception{
		//String類可以直接賦值實例化,但是StringBuffer類不行
		StringBuffer buf = new StringBuffer();              //實例化StringBuffer類對象
		buf.append("Hello ").append("XIAOSHAN ").append("!");
		change(buf);       //引用傳遞
		System.out.println(buf);
	}	
	public static void change(StringBuffer temp){   // 接收StringBuffer引用
		temp.append("\n").append("'https://blog.csdn.net/lvsongtao1225/category_12367710.html");//修改內(nèi)容
	}
}

程序執(zhí)行結(jié)果:

Hello XIAOSHAN !
https://blog.csdn.net/lvsongtao1225/category_12367710.html

此程序利用 StringBuffer 類對象實現(xiàn)了引用傳遞,并且通過最終的結(jié)果發(fā)現(xiàn),在 change() 方法中針對 StringBuffer 對象的修改可以影響原始 StringBuffer 類對象,所以 StringBuffer 對象的內(nèi)容是可以修改的。

StringBuffer類主要用于頻繁修改字符串的操作上。但是在任何開發(fā)中,面對字符串的操作,大部分情況下都先考慮 String類,只有在需要頻繁修改時才會考慮使用 StringBufferStringBuilder類操作。

【Java基礎(chǔ)教程】(三十三)常用類庫篇 · 第三講:可變字符串支持類——解析 StringBuffer與 StringBuilder類~,# Java基礎(chǔ)教程,java,jvm,開發(fā)語言,后端,程序人生

通過以上兩個類的定義結(jié)構(gòu)可以發(fā)現(xiàn), String 類與 StringBuffer 類都是 CharSequence 接口的子類,也就證明 StringStringBuffer類的對象都可以利用自動向上轉(zhuǎn)型的操作為 CharSequence 接口實例化。

1.2 特征

StringBuffer類是Java中一個被廣泛使用的可變字符串類。它提供了許多方法來操作和修改字符串內(nèi)容,而不會創(chuàng)建新的對象實例。

以下是StringBuffer類的一些重要特點:

  • 可變性:StringBuffer對象是可變的,意味著可以通過調(diào)用相應(yīng)的方法對其內(nèi)容進(jìn)行修改,而不會創(chuàng)建新的對象。相比之下,String對象是不可變的,一旦創(chuàng)建后就無法更改;
  • 線程安全:StringBuffer類是線程安全的,這意味著它的方法在多線程環(huán)境中可以安全地使用,不會導(dǎo)致競態(tài)條件或數(shù)據(jù)不一致的問題。然而,由于其需要額外的同步開銷,這可能會影響性能。如果不需要線程安全的操作,可以使用非線程安全的兄弟類StringBuilder,它具有相似的功能但性能更高;
  • 性能考慮:由于字符串是可變的,可以在執(zhí)行一系列操作后一次性獲取最終結(jié)果,避免了頻繁的字符串拷貝和內(nèi)存分配,因此在某些情況下,StringBuffer比使用+concat()操作符連接字符串更高效。

1.3 使用

以下是StringBuffer類的一些用法:

  • 字符串操作StringBuffer類提供了一系列方法來操作字符串,如添加字符、插入字符、替換字符、刪除字符等。這些方法可以根據(jù)需要靈活地修改字符串內(nèi)容;

  • 連接字符串StringBuffer類也可以用于高效地連接字符串,而不像String那樣每次連接都創(chuàng)建一個新的字符串對象。append()方法用于在當(dāng)前字符串末尾添加字符、字符串和其他數(shù)據(jù)類型的值;

  • 反轉(zhuǎn)字符串StringBuffer類提供了reverse()方法,用于反轉(zhuǎn)當(dāng)前字符串的順序。這對于需要逆序處理字符串的場景很有用。

下面是一個使用StringBuffer類的使用示例:

//	范例 2: StringBuffer類的使用
public static void main(String[] args) {
        // 創(chuàng)建一個空的StringBuffer對象
        StringBuffer sb = new StringBuffer();

        // 在末尾添加字符串
        sb.append("Hello");
        sb.append(" World!");

        // 輸出:Hello World!
        System.out.println(sb.toString());

        // 在指定位置插入字符串
        sb.insert(5, "Java ");
        System.out.println(sb.toString());

        // 反轉(zhuǎn)字符串
        sb.reverse();
        System.out.println(sb.toString());
    }

輸出結(jié)果:

Hello World!
HelloJava  World!
!dlroW  avaJolleH

總之,StringBuffer類是處理可變字符串的強(qiáng)大工具,特別適用于需要經(jīng)常修改字符串內(nèi)容的場景。并且它的方法是線程安全的,可以在多線程環(huán)境中安全地使用,不會導(dǎo)致競態(tài)條件或數(shù)據(jù)不一致的問題。但由于其需要額外的同步開銷,也同時會影響一些性能。

2?? StringBuilder類

2.1 概念及特征

StringBuilder 是 Java 中的一個類,它允許可變長度的字符串操作。與 String 類不同,StringBuilder 對象的長度和內(nèi)容都可以修改。這意味著可以在已存在的字符串上進(jìn)行添加、刪除和修改操作,而無需創(chuàng)建新的對象。

以下是該類的一些重要特性:

  • 可變性StringBuilder 具有可變性,這意味著可以動態(tài)地更改字符串內(nèi)容和長度;
  • 高效性:相對于直接使用 + 運算符連接字符串的方式,使用 StringBuilder 在性能上更高效。當(dāng)需要頻繁進(jìn)行字符串操作時,使用 StringBuilder 可以減少系統(tǒng)開銷。

2.2 使用

以下是該類的一些使用方法:

  • 初始化:可以通過無參構(gòu)造函數(shù)創(chuàng)建一個空的 StringBuilder 對象,或者可以根據(jù)已存在的字符串創(chuàng)建對象;還可以指定初始容量創(chuàng)建對象。
  • append()方法:用于在當(dāng)前字符串末尾附加給定的數(shù)據(jù);
  • delete()方法:用于刪除當(dāng)前字符串中指定范圍內(nèi)的字符;
  • insert()方法:用于將給定的數(shù)據(jù)插入到當(dāng)前字符串的指定位置;
  • replace():該方法用于替換當(dāng)前字符串指定范圍內(nèi)的字符;
  • reverse():該方法用于逆轉(zhuǎn)當(dāng)前字符串的字符順序;
  • toString():該方法用于將 StringBuilder 對象轉(zhuǎn)換為一個普通的字符串。

下面是一個使用StringBuilder類的示例:

//	范例 3: StringBuilder類的使用
public static void main(String[] args) {
        // 創(chuàng)建一個空的 StringBuilder 對象
        StringBuilder sb1 = new StringBuilder();
        // 根據(jù)已存在的字符串創(chuàng)建 StringBuilder 對象
        StringBuilder sb2 = new StringBuilder("Hello");
        // 指定初始容量創(chuàng)建 StringBuilder 對象
        StringBuilder sb3 = new StringBuilder(10);

        StringBuilder sb = new StringBuilder();
        sb.append("Hello");
        sb.append("World");
        System.out.println(sb.toString());

        sb.delete(5, 10);
        System.out.println(sb.toString());

        sb.insert(5, " World");
        System.out.println(sb.toString());

        sb.replace(5, 11, " Everybody");
        System.out.println(sb.toString());

        sb.reverse();
        System.out.println(sb.toString());

        String str = sb.toString();
        System.out.println(str);
    }

輸出結(jié)果:

HelloWorld
Hello
Hello World
Hello Everybody
ydobyrevE olleH
ydobyrevE olleH

除了上面提到的常用方法之外,StringBuilder 還有其他一些方法可以查詢和修改字符串。請參考 Java 官方文檔 以獲取更詳盡的信息。

3?? String、StringBuffer和StringBuilder的對比

String類:適用于少量的字符串不變的操作;
StringBuilder類:適用于單線程下在字符串緩沖區(qū)進(jìn)行大量操作;
StringBuffer類:適用于多線程下在字符串緩沖區(qū)進(jìn)行大量操作。

  • String類表示不可變的(immutable)字符串,該類是 final修飾的類,不能被繼承且表示字符串常量(字符串常量一旦聲明則不可改變,而字符串對象可以改變,改變的是其內(nèi)存地址的指向),對String修改會產(chǎn)生新的對象,效率低。而StringBuilderStringBuffer均為可變字符串;
  • String類使用 +concat() 方法做數(shù)據(jù)的連接操作,而在StringBuffer類和StringBuilder類中使用 append()方法進(jìn)行數(shù)據(jù)連接;
  • StringBuilder是非線程安全的,不保證同步所以在性能上較高;StringBuffer是線程安全的,該類方法都使用了 synchronized 修飾,所以符合多線程操作中的安全要求。

?? 本文源碼下載地址

Java的String類講解案例代碼(String類使用:創(chuàng)建對象、比較、連接、截取、查找和替換、拆分…)

【Java基礎(chǔ)教程】(三十三)常用類庫篇 · 第三講:可變字符串支持類——解析 StringBuffer與 StringBuilder類~,# Java基礎(chǔ)教程,java,jvm,開發(fā)語言,后端,程序人生


? 溫習(xí)回顧上一篇(點擊跳轉(zhuǎn))
《【Java基礎(chǔ)教程】(三十二)常用類庫篇 · 第二講:包裝類 Wrapper Class——概念及用途, 自動裝箱與拆箱,常用操作方法~》

? 繼續(xù)閱讀下一篇(點擊跳轉(zhuǎn))
《【Java基礎(chǔ)教程】(三十四)常用類庫篇 · 第四講:Runtime類——API知識匯總分享,深入解析Runtime運行時環(huán)境訪問支持類~》
文章來源地址http://www.zghlxwxcb.cn/news/detail-607363.html

【Java基礎(chǔ)教程】(三十三)常用類庫篇 · 第三講:可變字符串支持類——解析 StringBuffer與 StringBuilder類~,# Java基礎(chǔ)教程,java,jvm,開發(fā)語言,后端,程序人生

到了這里,關(guān)于【Java基礎(chǔ)教程】(三十三)常用類庫篇 · 第三講:可變字符串支持類——解析 StringBuffer與 StringBuilder類~的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java基礎(chǔ)教程】(三十一)常用類庫篇 · 第一講:Optional類——解鎖Java的Optional操作,消滅那些隱匿的空指針,還程序世界一個安穩(wěn)!~

    【Java基礎(chǔ)教程】(三十一)常用類庫篇 · 第一講:Optional類——解鎖Java的Optional操作,消滅那些隱匿的空指針,還程序世界一個安穩(wěn)!~

    Optional 類是Java 8引入的新特性,旨在解決空值( null )的處理問題 。它的設(shè)計目的是為了提供一種更好的方式來處理可能為空的值,避免使用 null 導(dǎo)致空指針異常。 Optional 是一個容器對象,可以持有某個類型的非空值或者空值。它是一個包裝類,用于替代可能為空的引用變

    2024年02月15日
    瀏覽(82)
  • 【Java練習(xí)題匯總】《第一行代碼JAVA》Java常用類庫篇,匯總Java練習(xí)題——Optional類、包裝類、可變字符串支持類、Runtime類、System類、數(shù)學(xué)運算類、日期時間處理...

    【Java練習(xí)題匯總】《第一行代碼JAVA》Java常用類庫篇,匯總Java練習(xí)題——Optional類、包裝類、可變字符串支持類、Runtime類、System類、數(shù)學(xué)運算類、日期時間處理...

    一、填空題 在 java.lang 包中提供了兩個字符串類,分別是________ 和________ 。這兩個類都是________ 接口的子類,字符串類提供的求字符串長度的方法是________________ 。 Java 提供的兩個大數(shù)操作類是________ 和________ 。 對象克隆方法是________ 類提供的,方法名稱是________________ ,對

    2024年02月16日
    瀏覽(37)
  • 第三十九天 Java基礎(chǔ)學(xué)習(xí)(三十三)

    一、Servlet Java類。由Servlet容器(Tomcat)進(jìn)行編譯-.class -運行 產(chǎn)生響應(yīng)結(jié)果返回給客戶端瀏覽器。 生命周期:(方法調(diào)用流程) init:初始化方法。在第一次訪問servlet時被調(diào)用一次。 service:完成servlet所做功能。每次訪問servlet時都會被調(diào)用。 doGet0:只有g(shù)et請求。才能訪問。 doPos

    2024年02月15日
    瀏覽(50)
  • 【JavaSE】Java基礎(chǔ)語法(三十三):File 一文詳解

    【JavaSE】Java基礎(chǔ)語法(三十三):File 一文詳解

    File類介紹 它是文件和目錄路徑名的抽象表示 文件和目錄是可以通過File封裝成對象的 對于File而言,其封裝的并不是一個真正存在的文件,僅僅是一個路徑名而已.它可以是存在的,也 可以是不存在的.將來是要通過具體的操作把這個路徑的內(nèi)容轉(zhuǎn)換為具體存在的 File類的構(gòu)造方法

    2024年02月06日
    瀏覽(39)
  • 【Java零基礎(chǔ)入門篇】第 ⑦ 期 - 常用類庫

    【Java零基礎(chǔ)入門篇】第 ⑦ 期 - 常用類庫

    博主:命運之光 專欄:Java零基礎(chǔ)入門 ? 學(xué)習(xí)目標(biāo) 掌握J(rèn)ava各種常用類庫的使用方法。 目錄 Java類庫 字符串String String 概述 創(chuàng)建字符串對象的2種方式 String類的特點 創(chuàng)建字符串對象的2種方式 總結(jié):創(chuàng)建字符串對象的2種方式區(qū)別 字符串的比較 字符串的比較 String類其它常用

    2024年02月04日
    瀏覽(23)
  • 第三十三章Java快速排序法

    ??????? 快速排序 (Quicksort)是對 冒泡排序 的一種改進(jìn),是一種排序執(zhí)行效率很高的排序算法。 ??????? 快速排序的基本思想是:通過一趟排序,將要排序的數(shù)據(jù)分隔成獨立的兩部分,其中一部分的所有數(shù)據(jù)比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分

    2024年02月11日
    瀏覽(36)
  • 【前端知識】React 基礎(chǔ)鞏固(三十三)——Redux的使用詳解

    【前端知識】React 基礎(chǔ)鞏固(三十三)——Redux的使用詳解

    針對 React 基礎(chǔ)鞏固(三十二) 中的案例,我們希望抽取頁面中共有的代碼(例如下方的代碼),使用高階組件統(tǒng)一攔截。 為了讓react和redux產(chǎn)生聯(lián)系,安裝一款工具 react-redux 使用 react-redux ,在index.js中統(tǒng)一注入store 新建about.js頁面,通過 react-redux 引入store 在App.jsx中引入新的

    2024年02月15日
    瀏覽(40)
  • Java常用類庫與技巧

    Java常用類庫與技巧

    序號 地址 1 計算機(jī)網(wǎng)絡(luò)核心 2 數(shù)據(jù)庫相關(guān) 3 Redis 4 Linux相關(guān) 5 JVM的內(nèi)容 6 GC相關(guān)的 7 Java多線程與并發(fā) 8 Java多線程與并發(fā)-原理 9 Java常用類庫與技巧 10 Java框架-Spring 1、String,StringBuffer,StringBuilder的區(qū)別? 2、Java異常 異常處理機(jī)制主要回答了三個問題 What:異常類型回答了什么

    2024年02月10日
    瀏覽(47)
  • 【從零開始學(xué)習(xí)JAVA | 第三十三篇】File類

    【從零開始學(xué)習(xí)JAVA | 第三十三篇】File類

    目錄 前言: File類: 構(gòu)造方法: 常見成員方法: 總結(jié): ? ? ? ? 本文我們將為大家介紹JAVA中一個比較使用的類:File類,他為我們提供了存儲數(shù)據(jù)的功能,使得程序的數(shù)據(jù)不至于在運行結(jié)束之后就丟失,是一個很好的類。 ????????File類是Java標(biāo)準(zhǔn)庫中用于操作文件和目錄

    2024年02月15日
    瀏覽(96)
  • 推薦Java開發(fā)常用的工具類庫google guava

    Guava Guava是一個Google開源的Java核心庫,它提供了許多實用的工具和輔助類,使Java開發(fā)更加簡潔、高效、可靠。目前和 hutool 一起,是業(yè)界常用的工具類庫。 shigen 也比較喜歡使用,在這里列舉一下常用的工具類庫和使用的案例。 參考: 整理一波Guava的使用技巧 - 掘金 Guava中這

    2024年02月09日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包