1. 程式人生 > >java-java.lang.StringBuffer的用法

java-java.lang.StringBuffer的用法

1、StringBuffer物件的初始化

StringBuffer物件的初始化不像String類的初始化一樣,Java提供的有特殊的語法,而通常情況下一般使用構造方法進行初始化。

例如:

StringBuffer s = new StringBuffer();

這樣初始化出的StringBuffer物件是一個空的物件,就是我犯的錯誤。

如果需要建立帶有內容的StringBuffer物件,則可以使用:

StringBuffer s = new StringBuffer(“abc”);

這樣初始化出的StringBuffer物件的內容就是字串”abc”。

需要注意的是,StringBuffer和String屬於不同的型別,也不能直接進行強制型別轉換,下面的程式碼都是錯誤的:

StringBuffer s = “abc”; //賦值型別不匹配

StringBuffer s = (StringBuffer)”abc”; //不存在繼承關係,無法進行強轉

StringBuffer物件和String物件之間的互轉的程式碼如下:

String s = “abc”;

StringBuffer sb1 = new StringBuffer(“123”);

StringBuffer sb2 = new StringBuffer(s); //String轉換為StringBuffer

String s1 = sb1.toString(); //StringBuffer轉換為String

2、StringBuffer的常用方法

StringBuffer類中的方法主要偏重於對於字串的變化,例如追加、插入和刪除等,這個也是StringBuffer和String類的主要區別。

a、append方法

public StringBuffer append(boolean b)

該方法的作用是追加內容到當前StringBuffer物件的末尾,類似於字串的連線。呼叫該方法以後,StringBuffer物件的內容也發生改變,例如:

StringBuffer sb = new StringBuffer(“abc”);

sb.append(true);

則物件sb的值將變成”abctrue”。

使用該方法進行字串的連線,將比String更加節約內容,例如應用於資料庫SQL語句的連線,例如:

StringBuffer sb = new StringBuffer();

String user = “test”;

String pwd = “123”;

sb.append(“select * from userInfo where username=“)

.append(user)

.append(“ and pwd=”)

.append(pwd);

這樣物件sb的值就是字串“select * from userInfo where username=test and pwd=123”。

b、deleteCharAt方法

public StringBuffer deleteCharAt(int index)

該方法的作用是刪除指定位置的字元,然後將剩餘的內容形成新的字串。例如:

StringBuffer sb = new StringBuffer(“Test”);

sb. deleteCharAt(1);

該程式碼的作用刪除字串物件sb中索引值為1的字元,也就是刪除第二個字元,剩餘的內容組成一個新的字串。所以物件sb的值變為”Tst”。

還存在一個功能類似的delete方法:

public StringBuffer delete(int start,int end)

該方法的作用是刪除指定區間以內的所有字元,包含start,不包含end索引值的區間。例如:

StringBuffer sb = new StringBuffer(“TestString”);

sb. delete (1,4);

該程式碼的作用是刪除索引值1(包括)到索引值4(不包括)之間的所有字元,剩餘的字元形成新的字串。則物件sb的值是”TString”。

c、insert方法

public StringBuffer insert(int offset, boolean b)

該方法的作用是在StringBuffer物件中插入內容,然後形成新的字串。例如:

StringBuffer sb = new StringBuffer(“TestString”);

sb.insert(4,false);

該示例程式碼的作用是在物件sb的索引值4的位置插入false值,形成新的字串,則執行以後物件sb的值是”TestfalseString”。

d、reverse方法

public StringBuffer reverse()

該方法的作用是將StringBuffer物件中的內容反轉,然後形成新的字串。例如:

StringBuffer sb = new StringBuffer(“abc”);

sb.reverse();

經過反轉以後,物件sb中的內容將變為”cba”。

e、setCharAt方法

public void setCharAt(int index, char ch)

該方法的作用是修改物件中索引值為index位置的字元為新的字元ch。例如:

StringBuffer sb = new StringBuffer(“abc”);

sb.setCharAt(1,’D’);

則物件sb的值將變成”aDc”。

f、trimToSize方法

public void trimToSize()

該方法的作用是將StringBuffer物件的中儲存空間縮小到和字串長度一樣的長度,減少空間的浪費。

總之,在實際使用時,String和StringBuffer各有優勢和不足,可以根據具體的使用環境,選擇對應的型別進行使用

相關推薦

java-java.lang.StringBuffer用法

1、StringBuffer物件的初始化 StringBuffer物件的初始化不像String類的初始化一樣,Java提供的有特殊的語法,而通常情況下一般使用構造方法進行初始化。 例如: StringBuffer s = new StringBuffer(

java.lang.StringBuffer.setLength() 方法設定字元序列的長度

public class StringBufferDemo { public static void main(String[] args) {     StringBuffer buff = new StringBuffer("tutorials");  

江南白衣之-Java進階-StringBuffer在高效能場景下的正確用法

每一條語句,都會生成一個新的StringBuilder,這裡就有了兩個StringBuilder,效能就完全不一樣了。如果是在迴圈體裡s+=i; 就更加多得沒譜。據R大說,努力的JVM工程師們在執行優化階段, 根據+XX:+OptimizeStringConcat(JDK7u40後預設開啟),把相鄰的(中

JDK8原始碼閱讀筆記--------java.lang.StringBuffer

A thread-safe, mutable sequence of characters. A string buffer is like a String, but can be modified. At any point in time it contains some partic

java.lang.StringBuffer的解釋

A modifiable sequence of characters for use in creating strings, where all accesses are synchronized. This class has mostly been replaced

java中的instanceof用法詳解

定義 xtend print 繼承 interface 參數 保留 如果 ack   instanceof是Java的一個二元操作符(運算符),也是Java的保留關鍵字。它的作用是判斷其左邊對象是否為其右邊類的實例,返回的是boolean類型的數據。用它來判斷某個對象是否是

Java中static關鍵字用法總結

副本 大括號 跟著 rac clas main 靜態成員變量 abstract 全局變量 1. 靜態方法 通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法 聲明為static的方法有以下幾條限制: · 它們僅能調用其他的sta

Java學習筆記之二十二】解析接口在Java繼承中的用法及實例分析

ani 復制代碼 ads compute 現在 target body 常量 實現接口 一、定義 Java接口(Interface),是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具

Java中的StringBuffer、StringBuilder和包裝器類型

相對 字母 失敗 這樣的 構造方法 stat float cin 序列 1.如何使用StringBuffer類? 答:1).StringBuffer類用於表示可以修改的字符串,稱為字符串緩沖對象; 2).使用運算符的字符串將自動創建字符串緩沖對象; 例:st

Java 正則簡單用法

leg 常用 gin 反斜杠 private htm code regexp val 正則表達式是一種可以用於模式匹配和替換的規範,一個正則表達式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)組成的文字模式,它 用以描述在查找文字主體時待匹配的一個或多個字符串。正

Java中Synchronized的用法

turn 效果 互斥 obj href sta dem data 總結 《編程思想之多線程與多進程(1)——以操作系統的角度述說線程與進程》一文詳細講述了線程、進程的關系及在操作系統中的表現,這是多線程學習必須了解的基礎。本文將接著講一下Java線程同步中的一個

java中printf的用法

分數 兩個 col pri 進行 nbsp 十進制數 short 百分數 目前printf支持以下格式: %c 單個字符 %d 十進制整數 %f 十進制浮點數

Java中getResourceAsStream的用法

文件路徑 工程 大致 一個 contex servlet cat 最終 resource 首先,Java中的getResourceAsStream有以下幾種: 1. Class.getResourceAsStream(String path) : path 不以’/‘開頭時

整理Java基礎知識--StringBuffer&StringBuilder類

結束 安全 sta 第一次 線程 字符串表 cit 出現 子字符串 StringBuffer 類 & StringBuilder 類String 長度大小不可變StringBuffer 和 StringBuilder 長度可變StringBuffer 線程安全 St

關於Java的Atomic包用法求助

cep rac 並發 exception final run @override head ger 最近在學高並發的一些知識,在學到Atomic時,運行程序,與預期不一樣 代碼如下 public class Learn13 { AtomicInteger coun

java基礎20 StringBuffer緩沖類

容量 ring memory 筆試題 strong class dem cap 謝謝 1、概要 StringBuffer 其實就是一個存儲字符的容器 字符串特點:字符串是常量;它們創建之後不能更改了字符串一旦發生變化,那麽立馬創建一個新的對象。註意:字符串的內容不適

java package(包)的用法

ghost fin clas 編譯 pub 可能 ati 打包成 .com 一般來說都用eclipse自動化圖形工具搞定,我用的是ubuntu,所以需要自己打包引入。 什麽是包? 這是對java源代碼的組織和管理的一種方式,比如:當操作系統某個目錄的文件非常多的時候,我

java中.currentTimeMillis的用法和含義

imp public out 不同的 轉化 println mtime 時間格式化 time 用法:可以用法獲取當前時間的毫秒數,可以通過毫秒數進行時間比較,時間轉化以及時間格式化等。public class SystemTime {public static void m

java成神之——java中string的用法

基本 ble sta first stand pat concat lower a+b java中String的用法 String基本用法 String分割 String拼接 String截取 String換行符和format格式化 String反轉字符串和去除空白字符

Java反射之getGenericSuperclass()用法

gets 獲得 target nor com ria 反射 log weight 父類 package com.itheima.mytest;public class Person<T1, T2> {} 子類 package com.itheima.m