日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java语法】StringBuilder 可变字符序列 和普通String的对比

發布時間:2024/2/28 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java语法】StringBuilder 可变字符序列 和普通String的对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

StringBuilder類

我們打開AbstractStringBuilder的源碼,可以看到內部是一個字符數組,但這個字符數組沒有用final修飾,隨時可以修改。因此,StringBuilder稱之為“可變字符序列”。
常用方法列表:

1. 重載的public StringBuilder append(…)方法可以為該StringBuilder 對象添加字符序列,仍然返回自身對象。2. 方法 public StringBuilder delete(int start,int end)可以刪除從start開始到end-1為止的一段字符序列,仍然返回自身對象。3. 方法 public StringBuilder deleteCharAt(int index)移除此序列指定位置上的 char,仍然返回自身對象。4. 重載的public StringBuilder insert(…)方法可以為該StringBuilder 對象在指定位置插入字符序列,仍然返回自身對象。5. 方法 public StringBuilder reverse()用于將字符序列逆序,仍然返回自身對象。6. 方法 public String toString() 返回此序列中數據的字符串表示形式。7. 和 String 類含義類似的方法: public int indexOf(String str) public int indexOf(String str,int fromIndex) public String substring(int start) public String substring(int start,int end) public int length() char charAt(int index)

示例代碼

import java.util.Arrays;//內部類 public class Test {public static void main(String[] args){StringBuilder str = new StringBuilder();// 字符串變長for (int i = 0; i < 26; i++){str.append((char) ('A' + i));}System.out.println("append:\t" + str);// 逆序str.reverse();System.out.println("reverse:" + str);// 修改字符str.setCharAt(3, '魚');System.out.println("setCharAt:" + str);// 一個或多個字符插入指定位置:鏈式調用str.insert(3, '魔').insert(4, '鬼');System.out.println("insert:" + str);// 刪除str.delete(6, 28);System.out.println("insert:" + str);} }

輸出

append: ABCDEFGHIJKLMNOPQRSTUVWXYZ
reverse:ZYXWVUTSRQPONMLKJIHGFEDCBA
setCharAt:ZYX魚VUTSRQPONMLKJIHGFEDCBA
insert:ZYX魔魚VUTSRQPONMLKJIHGFEDCBA

關于insert方法

重復調用的方式:

多次改變字符串長度,一定要用StringBuilder,不能用String。String會產生很多過程中的對象,拉低程序性能

StringBuilder 可變字符序列 和普通String的對比:

代碼如下

public class Test {public static void main(String[] args){/** 使用String進行字符串的拼接 */String str8 = "";// 本質上使用StringBuilder拼接, 但是每次循環都會生成一個StringBuilder對象long num1 = Runtime.getRuntime().freeMemory();// 獲取系統剩余內存空間System.out.println("初始狀態剩余內存 : " + (num1));long time1 = System.currentTimeMillis();// 獲取系統的當前時間for (int i = 0; i < 5000; i++){str8 = str8 + i;// 相當于產生了10000個對象}long num2 = Runtime.getRuntime().freeMemory();long time2 = System.currentTimeMillis();System.out.println("String占用內存 : " + (num1 - num2));System.out.println("String占用時間 : " + (time2 - time1));/** 使用StringBuilder進行字符串的拼接 */StringBuilder sb1 = new StringBuilder("");long num3 = Runtime.getRuntime().freeMemory();long time3 = System.currentTimeMillis();for (int i = 0; i < 5000; i++){sb1.append(i);}long num4 = Runtime.getRuntime().freeMemory();long time4 = System.currentTimeMillis();System.out.println("StringBuilder占用內存 : " + (num3 - num4));System.out.println("StringBuilder占用時間 : " + (time4 - time3));} }

運行結果

初始狀態剩余內存 : 254741016
String占用內存 : 47829360
String占用時間 : 130
StringBuilder占用內存 : 1318056
StringBuilder占用時間 : 2

總結

以上是生活随笔為你收集整理的【Java语法】StringBuilder 可变字符序列 和普通String的对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。