Java連載75-StringBuffer和StringBuilder

来源:https://www.cnblogs.com/ruigege0000/archive/2020/01/18/12210671.html
-Advertisement-
Play Games

一、StringBuffer和StringBuilder 1.StringBuffer是什麼? 答:是一個字元串緩衝區,工作原理:預先在記憶體中申請一塊空間以容納字元序列,如果預留的空間,則進行自動擴容,以容納更多的字元序列。 2.StringBuffer\StringBuilder和String最大 ...


一、StringBuffer和StringBuilder

1.StringBuffer是什麼?

答:是一個字元串緩衝區,工作原理:預先在記憶體中申請一塊空間以容納字元序列,如果預留的空間,則進行自動擴容,以容納更多的字元序列。

2.StringBuffer\StringBuilder和String最大的區別

String是不可以變的字元序列,存儲字元串常量池中

StringBuffer底層是一個char數組,但是該char數組是可以變的,並且可以自動擴容

3.StringBuffer和StringBuilder的預設初始化容量是16

4.如何優化StringBuffer和StringBuilder

最好在創建StringBuffer之前,預測StringBuffer的存儲字元數量,然後再創建StringBuffer的時候採用指定初始化容量的方式創建StringBuffer,為了減少底層數組的拷貝,提高效率。

5.StringBuffer和StringBuilder的區別?

StringBuffer是線程安全的,即可以在多線程的環境中使用,是安全的。

StringBuilder是非線程安全的,即在多線程的環境中使用這個類可以會出現問題。

 

package com.bjpowernode.java_learning;

​

public class D75_1_StringBufferAnalysis {

  public static void main(String [] args) {

    //創建字元串緩衝區對象

    StringBuffer s1 = new StringBuffer();//16//這個類的參數裡面可以傳入整數,代表初始化多大的空間,如果不寫,預設就是16

    //可以向StringBuffer中追加字元串

    String[] ins = {"Physical","music","sleep","gourmet"};

    //推薦字元串頻繁拼接使用StringBuffer和StringBuilder,不要使用String

    for(int i =0;i<ins.length;i++) {

      if(i==ins.length-1) {

        s1.append(ins[i]);

      }else {

        s1.append(ins[i]);

        s1.append(",");

      }

    }

    System.out.println(s1);

  }

}

 

 

二、源碼:                                        

D75_1_StringBufferAnalysis.java

https://github.com/ruigege66/Java/blob/master/D75_1_StringBufferAnalysis.java

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分享一些基礎小白們可能不知道的東西、以及一些基礎的知識的註意事項 ...
  • 引言 在 "上一篇文章" 中我們通過 腳手架快速搭建了一個簡單的示例,並基於該示例講解了在類組件中 和`React.PureComponent @babel/preset react render React.createElement React.createElement ReactElemen ...
  • Json的介紹和Json結構 JSON是JavaScript Object Notation的縮寫,意思是JavaScript 對象表示法 是存儲和交換文本信息的語法。類似 XML,不過它比 XML 更小、更快,更易解析 官網的介紹 http://www.json.org/json zh.html ...
  • 在用到el-tree的懶載入和預設勾選功能時,若第一次勾選前幾個連續節點,第二次進入預設勾選時,由於el-tree子節點尚未完全載入(只載入出來前幾個),預設勾選已經開始(已載入出來的子節點被預設勾選),這時el-tree會認為子節點全部勾選,所以父節點也被勾選,這就導致所有子節點都被勾選; 解決方 ...
  • 本篇不會過多講述 ts 語法,著重記錄下 在 React 中使用 ts 的方法以及踩坑經過。 ...
  • 0.效果演示 插入視頻插不進來,就很煩。可以出門右拐去優酷看下(點我!)。 1.準備工作 1.1前端框架 前端使用了基於vue.js的nuxt.js。為什麼使用nuxt.js? 首先我做的是博客的項目,所以SSR至關重要。雖然跟本文要講的登錄註冊沒有什麼關係,但是文章如果用axios來非同步獲取的話, ...
  • X 維度本身超出了技術範疇,但為了更好地服務業務,技術人也有必要懂得一些基礎的業務優化思路。如果只知道埋頭趕路,不知道抬頭看天,那我們技術人很容易做了費力不討好的事情,例如:某些性能瓶頸是由於業務流程設計不合理導致的,在業務流程優化完善之前,我們僅僅從技術視角去優化改善,極有可能事倍功半。具體說來,... ...
  • 意圖 原型模式是創建型設計模式,可以複製已存在的對象而無需依賴它的類。 問題 假如現在有一個對象,我們想完全複製一份新的,我們該如何做? 1. 創建同一個類的新對象 2. 遍歷所有已存在對象的值,然後將他們的值複製到新對象。 很好,但是我們會發現存在如下問題: 1. 該對象的值並不一定全對對外開放, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...