Java進階學習筆記27——StringBuilder、StringBuffer

StringBuilder:

StringBuilder代表可變字符串對象,相當于一個容器,它里面裝的字符串是可以改變的,就是用來操作字符串的

好處: StringBuilder比String更適合做字符串的修改操作,效率會更高,代碼會更簡潔。

API文檔:

?StringBuilder功能真的非常豐富。

package cn.ensource.d16_stringbuiilder;public class Test {public static void main(String[] args) {// 目標:搞清楚StringBuilder的用法和作用StringBuilder s = new StringBuilder("itheima");// 1. 拼接內容s.append(" Java");s.append(123);// 2. 支持鏈式編程的s.append(666).append("黑馬");// 3. reverse方法System.out.println(s);s.reverse();System.out.println(s);// 4. length,返回字符串的長度System.out.println(s.length());// 5. 把StringBuilder對象又轉換成String類型String res = s.reverse().toString();System.out.println(res);}
}

支持鏈式編程。append方法。

為啥我們的Java建議使用StringBuilder,而不用原來學過的String?

package cn.ensource.d16_stringbuiilder;public class Test2 {public static void main(String[] args) {// 目標:掌握StringBuilder的好處// 需求:要拼接100萬次abc// 先用String測試性能
//        String rs = "";
//        for (int i = 1; i <= 1000000; i++) {
//            rs = rs + "abc";
//        }
//        System.out.println(rs);// 使用StringBuilder演示StringBuilder s = new StringBuilder();for (int i = 1; i <= 1000000; i++) {s.append("abc");}System.out.println(s);// 可見StringBuilder操作字符串非常快速!!!!}
}

今后:

對于字符串的相關的操作,如果頻繁的拼接、修改等,建議使用StringBuilder,效率高!!!

注意:如果操作字符串較少,或者不需要修改,以及定義字符串變量,還是建議使用String。

StringBuffer和StringBuilder:

注意:

StringBuffer的用法與StringBuilder是一模一樣的。

但是StringBuilder是線程不安全的,StringBuffer是線程安全的。

兩者API的方法基本上都是一樣的。

將來很多用戶進入系統,會存在線程不安全的情況。現在我們先記住這個觀點。

案例:

返回任意整形數組的內容:

需求:

設計一個方法,用于返回任意整形數組的內容,要求返回的數組內容格式如:[11, 22, 33]

分析:

1)方法是否要接收數據呢?需要接收整形數組。

2)方法是否需要返回數據呢?需要返回一個拼接的結果,字符串類型

3)方法內部:遍歷數組的數據,把遍歷的數據都拼接起來,此時使用StringBuilder來完成拼接。

package cn.ensource.d16_stringbuiilder;public class Test3 {public static void main(String[] args) {// 案例String res = getArrayData(new int[]{11, 22, 33});System.out.println(res);}/*** getArrayData方法*/public static String getArrayData(int[] arr) {// 判斷arr是否為nullif (arr == null || arr.length == 0) {return null;}StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {sb.append(arr[i]);if (i != arr.length - 1) {sb.append(", ");}}sb.append("]");return sb.toString();}
}

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

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

相關文章

在CSDN上成長的感悟,你的粉絲長啥樣?

文章目錄 一、寫作的初衷1. 記錄所學內容2.鞏固所學知識3.分享與幫助4.方便后續查找5.獲取激勵 二、你的粉絲長啥樣&#xff1f;1. 粉絲的特點與困惑2. 關于粉絲&#xff0c;細思極恐 三、繼續前行、堅持初心 在CSDN上寫博文&#xff0c;對于我來說&#xff0c;不僅僅是一個記錄…

OTA在線旅行社系統架構:連接世界的科技紐帶

隨著互聯網的快速發展和人們對旅行需求的不斷增長&#xff0c;OTA&#xff08;Online Travel Agency&#xff09;在線旅行社成為了現代旅行業中的重要一環。OTA系統架構的設計和實現將對旅行行業產生深遠影響。本文將探討OTA在線旅行社系統架構的重要性和關鍵組成部分&#xff…

異構圖上的連接預測一

這里寫目錄標題 異構圖&#xff1f;處理數據&#xff1a; 異構圖&#xff1f; 異構圖&#xff1a;就是指節點與邊類型不同的圖。 連接預測&#xff1a;目的是預測圖中兩個節點之間是否存在一條邊&#xff0c;或者是預測兩個節點之間&#xff0c;在未來可能形成的連接。 eg&…

Linux系統如何通過編譯方式安裝python3.11.3

1.切換到/data 目錄 cd /data 2.下載python源碼Python-3.11.3.tgz wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz tar -xzf Python-3.11.0.tgz cd Python-3.11.3 3.配置python的安裝路徑 和 執行openssl的路徑 ./configure --prefix/usr/local/pyth…

Java筑基(三)

Java筑基&#xff08;三&#xff09; 一、final概念1、案例1&#xff1a;采用繼承&#xff1a;2、案例2&#xff1a;final修飾的類不可以被繼承&#xff1a;3、案例3&#xff1a;final修飾的類不能有子類&#xff0c;但是可以有父類4、final修飾構造方法5、final修飾普通方法6、…

頭歌GCC編程工具集第1關:實驗工具GCC與objdump的使用

任務要求 根據提示&#xff0c;在右側編輯器中顯示的bytes.c文件中的 Begin-End 之間補充代碼&#xff08;即設置一個數組的初始值&#xff09;&#xff0c;使其與如下顯示的main.c文件一起編譯、生成的程序在運行時輸出“SUCCESS”。 程序源文件main.c的內容如下&#xff08;務…

牛客前端面試高頻八股總結(1)(附文檔)

1.html語義化 要求使用具有語義的標簽&#xff1a;header footer article aside section nav 三點好處&#xff1a; &#xff08;1&#xff09;提高代碼可讀性&#xff0c;頁面內容結構化&#xff0c;更清晰 &#xff08;2&#xff09;無css時&#xff0c;時頁面呈現出良好…

滲透工具CobaltStrike工具的下載和安裝

一、CobalStrike簡介 Cobalt Strike(簡稱為CS)是一款基于java的滲透測試工具&#xff0c;專業的團隊作戰的滲透測試工具。CS使用了C/S架構&#xff0c;它分為客戶端(Client)和服務端(Server)&#xff0c;服務端只要一個&#xff0c;客戶端可有多個&#xff0c;多人連接服務端后…

Golang設計模式(四):觀察者模式

觀察者模式 什么是觀察者 觀察者模式(Observer Pattern)&#xff1a;定義對象之間的一種一對多依賴關系&#xff0c;使得每當一個對象狀態發生改變時&#xff0c;其相關依賴對象皆得到通知并被自動更新。觀察者模式的別名包括發布-訂閱&#xff08;Publish/Subscribe&#xf…

音視頻開發8 音視頻中SDL的使用,SDL 在windows上環境搭建,SDL 使用 以及 常用 API說明,show YUV and play PCM

1.SDL簡介 SDL&#xff08;Simple DirectMedia Layer&#xff09;&#xff0c;是一個跨平臺的C語言多媒體開發庫。 支持Windows、Mac OS X、Linux、iOS、Android 提供對音頻、鍵盤、鼠標、游戲操縱桿、圖形硬件的底層訪問 很多的視頻播放軟件、模擬器、受歡迎的游戲都在使用…

面試中算法(A星尋路算法)

一、問題需求&#xff1a; 迷宮尋路游戲中&#xff0c;有一些小怪物要攻擊主角&#xff0c;現在希望你給這些小怪物加上聰 明的AI (Artificial Intelligence&#xff0c;人工智能&#xff09;&#xff0c;讓它們可以自動繞過迷宮中的障礙物&#xff0c;尋找到主角的所在。 A星…

json web token及JWT學習與探索

JSON Web Token&#xff08;縮寫 JWT&#xff09;是目前最流行的跨域認證解決方案 作用&#xff1a; 主要是做鑒權用的登錄之后存儲用戶信息 生成得token(令牌)如下 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjg3Njc0NDkyLCJleHAiOjE2ODc3NjA4OTJ9.Y6eFG…

Django使用fetch實現登錄

Django使用session管理&#xff08;cookie&#xff09;實現了一個用戶登錄和會話保持功能。如果需求不太復雜可以使用Django默認的登錄功能。 1 安裝django-cors-headers 首先需要安裝django-cors-headers pip install django-cors-headers2 在settings中配置 需要按照djan…

用Dockerfile和Shell腳本來部署一個Go項目

如何使用Dockerfile和Shell腳本來部署一個Go項目。這種方法能夠幫助我們自動化構建、測試和部署流程&#xff0c;提高開發效率。 **一、項目結構和代碼** 首先&#xff0c;我們需要準備一個Go項目。假設我們的項目結構如下&#xff1a; my-go-app/ ├── main.go ├── D…

1107 老鼠愛大米

solution 記錄每組的最大值&#xff0c;并比較組間的最大值胖胖鼠~ #include<iostream> using namespace std; int main(){int n, m, ans, fat -1, x;scanf("%d%d", &n, &m);for(int i 0; i < n; i){ans -1;for(int j 0; j < m; j){scanf(…

【C/C++】Makefile文件的介紹與基本用法

創作不易&#xff0c;本篇文章如果幫助到了你&#xff0c;還請點贊 關注支持一下?>&#x16966;<)!! 主頁專欄有更多知識&#xff0c;如有疑問歡迎大家指正討論&#xff0c;共同進步&#xff01; &#x1f525;c系列專欄&#xff1a;C/C零基礎到精通 &#x1f525; 給大…

第三周:從錯誤中認識到管理

1. 約定兩周時間&#xff0c;完成這個功能 在管理者分配好項目任務后&#xff0c;只是口頭約定兩周的時間&#xff0c;沒有形成需求文檔。對于需求&#xff0c;人與人的理解是不一樣的&#xff0c;有些太過于抽象的東西&#xff0c;太難以描繪&#xff0c;只能一而再再而三的確…

【論文復現】LSTM長短記憶網絡

LSTM 前言網絡架構總線遺忘門記憶門記憶細胞輸出門 模型定義單個LSTM神經元的定義LSTM層內結構的定義 模型訓練模型評估代碼細節LSTM層單元的首尾的處理配置Tensorflow的GPU版本 前言 LSTM作為經典模型&#xff0c;可以用來做語言模型&#xff0c;實現類似于語言模型的功能&am…

vue3的proxy如何取代object和defineproperty

在 Vue 2.x 中&#xff0c;為了響應式地追蹤對象屬性的變化&#xff0c;Vue 使用了 Object.defineProperty 方法。但是&#xff0c;Object.defineProperty 有一些限制&#xff0c;比如它不能追蹤屬性的添加或刪除&#xff0c;也不能直接用于數組或對象原型鏈上的屬性。 Vue 3.…

【Torch學習筆記】

作者&#xff1a;zjk 和 的區別是逐元素相乘&#xff0c;是矩陣相乘 cat stack 的區別 cat stack 是用于沿新維度將多個張量堆疊在一起的函數。它要求所有輸入張量具有相同的形狀&#xff0c;并在指定的新維度上進行堆疊。