【Java學習筆記】SringBuffer類(重點)

StringBuffer(重點

1. 基本介紹

2. 結構關系圖

在這里插入圖片描述

(1) StringBuffer 的直接父類AbstractStringBuilder

(2) StringBuffer 實現了 Serializable,即 StringBuffer 的對象可以串行化即可以在網絡中傳輸

(3) 在父類中 AbstractStringBuilder 有屬性 char[] value, 不是 final

(4)數組的起始大小是 16,如果大于 16 個字符長度,會自動擴容

(5) 該 value 數組存放字符串內容,引出存放在堆中的

(6) 因為 StringBuffer 字符內容是存在 char[] value, 所以在變化(增加/刪除)時不用每次都更換地址(即不是每次創建新對象),所以效率高于 String


一、StringStringBuffer的相互轉換

(1)String—>StringBuffer

String str = "jackson";// 方法一
StringBuffer stringBuffer = new StringBuffer(str);// 方法二
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);

(2)StringBuffer—>String

StringBuffer stringBuffer = new StringBuffer("jackson");// 方法一
String str1 = stringBuffer.toString();// 方法二
String str2 = new String(stringBuffer);

二、StringBuffer類的常用方法

方法介紹

示例代碼

StringBuffer stringBuffer = new StringBuffer("hello~");System.out.println("stringBuffer --> " + stringBuffer);// append
stringBuffer.append("world");
System.out.println("append(\"world\") --> " + stringBuffer);//delete
stringBuffer.delete(6,11);
System.out.println("delete(6,11) --> " + stringBuffer);// deleteCharAt()
stringBuffer.deleteCharAt(5);
System.out.println("deleteCharAt(5) --> " + stringBuffer);// insert()
stringBuffer.insert(5,"~world");
System.out.println("insert(5,\"~world\") --> " + stringBuffer);// subString()
System.out.println("stringBuffer.substring(5,11) --> " + stringBuffer.substring(5,11));// replace()
stringBuffer.replace(5,11,"");
System.out.println("replace(5,11,\"\") --> " + stringBuffer);// indexOf()
System.out.println("indexOf(\"l\") --> " + stringBuffer.indexOf("l"));// lastIndexOf()
System.out.println("lastIndexOf(\"l\") --> " + stringBuffer.lastIndexOf("l"));// reverse()
System.out.println("reverse() --> " + stringBuffer.reverse());

輸出結果

stringBuffer --> hello~
append("world") --> hello~world
delete(6,11) --> hello~
deleteCharAt(5) --> hello
insert(5,"~world") --> hello~world
stringBuffer.substring(5,11) --> ~world
replace(5,11,"") --> hello
indexOf("l") --> 2
lastIndexOf("l") --> 3
reverse() --> olleh

三、小練習

題目:價格中小數點前的數字,每三位用逗號隔開

String price = "8123564.59";
StringBuffer sb = new StringBuffer(price);// 上面的兩步需要做一個循環處理,才是正確的
for (int j = sb.lastIndexOf(".") - 3; j > 0; j -= 3) {sb = sb.insert(j, ",");
}System.out.println(sb);  // 8,123,564.59

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82911.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82911.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82911.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機網絡領域所有CCF-A/B/C類期刊匯總!

本期小編統計了【計算機網絡】領域CCF推薦所有期刊的最新影響因子,分區、年發文量以及投稿經驗,供大家參考! CCF-A類 1 IEEE Journal on Selected Areas in Communications 【影響因子】13.8 【期刊分區】JCR1區,中科院1區TOP …

AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用)

環境: Ubuntu20.04 WSL2 問題描述: AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用) 解決方案: 打開管家大模型 1.運行大模型在cmd下輸入: ollama run qwen2.5-3bnsfwny運行管家 數字人運行腳本&#xff…

【python深度學習】Day 47 注意力熱圖可視化

知識點:熱力圖 作業:對比不同卷積層熱圖可視化的結果 一、概念 為了方便觀察輸出,將特征圖進行可視化。特征圖本質就是不同的卷積核的輸出,淺層指的是離輸入圖近的卷積層,淺層卷積層的特征圖通常較大,而深層…

C#語音識別:使用Whisper.net實現語音識別

C#語音識別:使用Whisper.net實現語音識別 在當今數字化時代,語音識別技術已廣泛應用于智能助手、語音轉文字、會議記錄等眾多領域。對于 C# 開發者而言,如何快速、高效地實現語音識別功能呢?今天,我們就來介紹一個強大…

開源分享|適合初創商家的餐飲系統,基于thinkphp8+element-plus

一、項目介紹 三勾餐飲點餐連鎖版系統是一個基于thinkphp8element-plusuniapp打造的面向開發的小程序商城的全面解決方案,旨在為連鎖餐飲企業提供高效的點餐與管理服務。該系統支持多端應用發布,包括微信小程序、H5、安卓及iOS平臺,實現數據…

rec_pphgnetv2完整代碼學習(一)

rec_pphgnetv2是paddleocr_v5中的重要改進,因此對其完整代碼進行學習十分之有必要。 一、IdentityBasedConv1x1 這段代碼定義了 IdentityBasedConv1x1 類,它是 PaddleOCRv5 中 rec_pphgnetv2 模型的關鍵改進之一。該層通過將恒等映射(Ident…

vue3+dify從零手擼AI對話系統

vue3dify從零手擼AI對話系統 前言 近年來,人工智能技術呈現爆發式增長,其應用已深度滲透至各行各業。甚至家里長輩們也開始借助AI工具解決日常問題。作為程序員群體,我們更應保持技術敏銳度,緊跟這波浪潮。 回溯求學時期&#xf…

robot_lab train的整體邏輯

Go2機器人推理(Play)流程詳細分析 概述 本文檔詳細分析了使用命令 python scripts/rsl_rl/base/play.py --task RobotLab-Isaac-Velocity-Rough-Unitree-Go2-v0 進行Go2機器人推理的完整流程,基于實際的代碼實現,包括模型加載、環境配置調整、推理循環…

Python Day45

Task: 1.tensorboard的發展歷史和原理 2.tensorboard的常見操作 3.tensorboard在cifar上的實戰:MLP和CNN模型 效果展示如下,很適合拿去組會匯報撐頁數: 作業:對resnet18在cifar10上采用微調策略下,用tens…

MySQL SQL 優化:從 INSERT 到 LIMIT 的實戰與原理

在數據庫驅動的現代應用中,SQL 查詢的性能直接決定了用戶體驗和系統效率。本文將深入探討 MySQL (特別是 InnoDB 存儲引擎)中常見的 SQL 性能瓶頸,并結合實際案例,詳細剖析從數據插入到復雜分頁查詢的優化策略與底層實…

SQL 基礎入門

SQL 基礎入門 SQL(全稱 Structured Query Language,結構化查詢語言)是用于操作關系型數據庫的標準語言,主要用于數據的查詢、新增、修改和刪除。本文面向初學者,介紹 SQL 的基礎概念和核心操作。 1. 常見的 SQL 數據…

HTTP 請求協議簡單介紹

目錄 常見的 HTTP 響應頭字段 Java 示例代碼:發送 HTTP 請求并處理響應 代碼解釋: 運行結果: 文件名: 總結: HTTP(HyperText Transfer Protocol)是用于客戶端與服務器之間通信的協議。它定…

《100天精通Python——基礎篇 2025 第5天:鞏固核心知識,選擇題實戰演練基礎語法》

目錄 一、踏上Python之旅二、Python輸入與輸出三、變量與基本數據類型四、運算符五、流程控制 一、踏上Python之旅 1.想要輸出 I Love Python,應該使用()函數。 A.printf() B.print() C.println() D.Print() 在Python中想要在屏幕中輸出內容,應該使用print()函數…

求解一次最佳平方逼近多項式

例 設 f ( x ) 1 x 2 f(x)\sqrt{1x^2} f(x)1x2 ?,求 [ 0 , 1 ] [0,1] [0,1]上的一個一次最佳平方逼近多項式。 解 : d 0 ∫ 0 1 1 x 2 d x 1 2 ln ? ( 1 2 ) 2 2 ≈ 1.147 d_0\int_{0}^{1}\sqrt{1x^2}dx\frac{1}{2}\ln(1\sqrt{2})\frac{\sqrt…

在Ubuntu上使用 dd 工具制作U盤啟動盤

在Ubuntu上使用 dd 工具制作U盤啟動盤 在Linux系統中,dd 是一個功能強大且原生支持的命令行工具,常用于復制文件和轉換數據。它也可以用來將ISO鏡像寫入U盤,從而創建一個可啟動的操作系統安裝盤。雖然圖形化工具(如 Startup Disk…

如何理解OSI七層模型和TCP/IP四層模型?HTTP作為如何保存用戶狀態?多服務器節點下 Session方案怎么做

本篇概覽: OSI 七層模型是什么?每一層的作用是什么?TCP/IP四層模型和OSI七層模型的區別是什么? HTTP 本身是無狀態協議,HTTP如何保存用戶狀態? 能不能具體說一下Cookie的工作原理、生命周期、作用域?使用…

深入剖析 RocketMQ 中的 DefaultMQPushConsumerImpl:消息推送消費的核心實現

前言 在 Apache RocketMQ 的消息消費體系中,RocketMQ 提供了DefaultMQPushConsumer(推送消費)和DefaultMQPullConsumer(拉取消費)兩種主要消費方式。DefaultMQPushConsumer與DefaultMQPullConsumer在消息獲取方式&…

Linux編程:2、進程基礎知識

一、進程基本概念 1、進程與程序的區別 程序:靜態的可執行文件(如電腦中的vs2022安裝程序)。進程:程序的動態執行過程(如啟動后的vs2022實例),是操作系統分配資源的單位(如 CPU 時…

React Router 中 navigate 后瀏覽器返回按鈕不起作用的問題記錄

React Router 中 navigate 后瀏覽器返回按鈕不起作用的問題記錄 在使用 React Router(v6)開發項目時,我遇到了一個讓人困惑的問題: 當我從 /article 頁面使用 navigate("/article/next") 進行跳轉后,點擊瀏…

[面試精選] 0094. 二叉樹的中序遍歷

文章目錄 1. 題目鏈接2. 題目描述3. 題目示例4. 解題思路5. 題解代碼6. 復雜度分析 1. 題目鏈接 94. 二叉樹的中序遍歷 - 力扣(LeetCode) 2. 題目描述 給定一個二叉樹的根節點 root ,返回 它的 中序 遍歷 。 3. 題目示例 示例 1 : 輸入&…