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

歡迎訪問 生活随笔!

生活随笔

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

java

java可变长字符串类型,Java 常用类——StringBufferamp;StringBuilder【可变字符序列】_IT技术_软件云...

發布時間:2024/4/11 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java可变长字符串类型,Java 常用类——StringBufferamp;StringBuilder【可变字符序列】_IT技术_软件云... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、字符串拼接問題

由于 String 類的對象內容不可改變,所以每當進行字符串拼接時,總是會在內存中創建一個新的對象。

Demo:

1 public class StringDemo {

2 public static void main(String[] args) {

3 String s = "Hello";

4 s += "World";

5 System.out.println(s);

6 }

7 }

上面這段代碼,總共產生了三個字符串,即“Hello”,“world” 和 “HelloWorld”。引用變量 s 首先執行 Hello 對象,最終指向拼接出來的新字符串對象,即 HelloWorld。

由此可見,如果對字符串進行拼接操作,每次拼接,都會構建一個新的 String 對象,既耗時,又浪費空間。為了解決這一問題,可以使用 java.lang.StringBuilder 類。

String類有這樣的描述:字符串是常量,它們的值在創建后不能被更改。

由于 String 類不可變,對于頻繁操作字符串的操作不方便,JDK為我們提供了可變的字符序列。

二、StringBuffer 類

1、概述

(1)java.lang.StringBuffer 代表可變的字符序列,JDK1.0中聲明,可以對字符串內容進行增刪,此時不會產生新的對象。

(2)StringBuffer 類中有很多方法與 String 相同;

(3)作為參數傳遞時,方法內部可以改變值;

(4)類結構:

(5)AbstractStringBuilder 類

2、構造方法

StringBuffer 類不同于 String,其對象必須使用構造器生成。該類有四個構造器:

1 public StringBuffer() {

2 super(16); //初始容量為16的字符串緩沖區

3 }

4

5 public StringBuffer(int capacity) {

6 super(capacity); //構造指定容量的字符串緩沖區

7 }

8

9 public StringBuffer(String str) {

10 super(str.length() + 16); //將內容初始化為指定字符串內容

11 append(str);

12 }

13

14 public StringBuffer(CharSequence seq) {

15 this(seq.length() + 16);

16 append(seq);

17 }

3、常用方法

StringBuffer append(xxx):提供了很多的append()方法,用于進行字符串拼接

StringBuffer delete(int start,int end):刪除指定位置的內容

StringBuffer replace(int start, int end, String str):把[start,end)位置替換為str

StringBuffer insert(int offset, xxx):在指定位置插入xxx

StringBuffer reverse() :把當前字符序列逆轉

public int indexOf(String str)

public String substring(int start,int end):返回一個從start開始到end索引結束的左閉右開區間的子字符串

public int length()

public char charAt(int n )

public void setCharAt(int n ,char ch)

這些方法可以理解為對一個該字符串的增刪改查,遍歷操作:

增:append(xxx)

刪:delete(int start,int end)

改:setCharAt(int n ,char ch) / replace(int start, int end, String str)

查:charAt(int n )

插:insert(int offset, xxx)

長度:length();

遍歷:for() + charAt() / toString()

Demo:

1 @Test

2 public void test(){

3 StringBuffer s1 = new StringBuffer("abc");

4 s1.append(1);

5 s1.append('1');

6 System.out.println(s1);

7 // s1.delete(2,4);

8 // s1.replace(2,4,"hello");

9 // s1.insert(2,false);

10 // s1.reverse();

11 String s2 = s1.substring(1, 3);

12 System.out.println(s1);

13 System.out.println(s1.length());

14 System.out.println(s2);

15 }

4、方法鏈

StringBuffer 類的這些方法支持方法鏈操作。

方法鏈的原理:

可以看到,每次操作完之后都會把此對象返回,進而可以接著調用其他本類中方法。

Demo:

1 @Test

2 public void test4() {

3 StringBuffer buffer = new StringBuffer("abc");

4

5 StringBuffer bufferChange = buffer.append("a").append(1).append(false).reverse();

6

7 System.out.println(bufferChange);

8 }

5、擴容原理

6、

7、

三、StringBuilder 類

四、

五、

總結

以上是生活随笔為你收集整理的java可变长字符串类型,Java 常用类——StringBufferamp;StringBuilder【可变字符序列】_IT技术_软件云...的全部內容,希望文章能夠幫你解決所遇到的問題。

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