Java_StringBuffer类
3、具體內(nèi)容
???????? 在java之中類庫(kù)提供的是非常的多的,今天所講解的類庫(kù)只屬于Java SE的范疇,日后還會(huì)學(xué)習(xí)更多的類庫(kù),包括許多的第三方類庫(kù),個(gè)人建議的學(xué)習(xí)方法:清楚每一個(gè)類的作用,而后其對(duì)應(yīng)的方法操作通過(guò)文檔查詢,但是對(duì)于一些常用代碼必須要求可以靈活編寫。
3.1、StringBuffer類(重點(diǎn))
???????? 在講解StringBuffer類之前首先來(lái)簡(jiǎn)單回顧一下String類的特點(diǎn):
· String類的對(duì)象有兩種實(shí)例化方式,一種是直接賦值,只會(huì)開辟一塊堆內(nèi)存空間,而且對(duì)象可以自動(dòng)入池,另外一種方式使用構(gòu)造方法完成,會(huì)開辟兩塊空間,有一塊空間將成為垃圾,并且不會(huì)自動(dòng)入池,但是可以通過(guò)intern()方法手工入池;
?????????????????? · 字符串常量一旦聲明則不可改變,而字符串對(duì)象可以改變,但是改變的是其內(nèi)存地址的指向;
???????? 通過(guò)以上的幾個(gè)特點(diǎn)就可以清楚的發(fā)現(xiàn),String類是表示字符串使用最多的類,但是其不適合于被頻繁修改的字符串操作上,所以在這種情況下,往往可以使用StringBuffer類,即:StringBuffer類方便用戶進(jìn)行內(nèi)容的修改。在String類之中使用“+”作為數(shù)據(jù)庫(kù)的連接操作,而在StringBuffer類之中使用append()方法進(jìn)行數(shù)據(jù)的連接。
范例:使用StringBuffer操作,StringBuffer的內(nèi)容可以改變
| package cn.mldn.demo; public class TestDemo { ??? public static void main(String[] args) throws Exception { ??????? StringBuffer buf = new StringBuffer(); ??????? buf.append("Hello ").append("World ."); // 連接內(nèi)容 ??????? fun(buf); ??????? System.out.println(buf); ??? } ??? public static void fun(StringBuffer temp) { ??????? temp.append("\n").append("Hello MLDN"); ??? } } |
???????? StringBuffer類在日后主要用于頻繁修改字符串的操作上,但是在任何的開發(fā)之中,面對(duì)字符串的操作,98%都先考慮String,只有那2%會(huì)考慮StringBuffer。
???????? 現(xiàn)在表示字符串的操作類就有了兩個(gè):String、StringBuffer,那么下面通過(guò)這兩個(gè)類的定義來(lái)研究一下關(guān)系:
| String類: | StringBuffer類: |
| public final class String extends Object implements Serializable, Comparable<String>, CharSequence | public final class StringBuffer extends Object implements Serializable, CharSequence |
???????? 現(xiàn)在發(fā)現(xiàn)String和StringBuffer類都實(shí)現(xiàn)了一個(gè)CharSequence接口,日后一定要記住,如果看見了CharSequence最簡(jiǎn)單的理解做法就是傳字符串,但是雖然這兩個(gè)類是同一個(gè)接口的子類,不過(guò)這兩個(gè)類對(duì)象之間卻不能互相直接轉(zhuǎn)型。
操作一:將String變?yōu)镾tringBuffer
???????? · 方法一:直接利用StringBuffer類的構(gòu)造方法,public StringBuffer(String str)
| package cn.mldn.demo; public class TestDemo { ??? public static void main(String[] args) throws Exception { ??????? String str = "Hello World ." ; ??????? StringBuffer buf = new StringBuffer(str); ??????? System.out.println(buf); ??? } } |
???????? · 方法二:利用StringBuffer類的append()方法
| package cn.mldn.demo; public class TestDemo { ??? public static void main(String[] args) throws Exception { ??????? String str = "Hello World ." ; ??????? StringBuffer buf = new StringBuffer(); ??????? buf.append(str) ; ??????? System.out.println(buf); ??? } } |
操作二:將StringBuffer變?yōu)镾tring,利用StringBuffer類的toString()方法完成
| package cn.mldn.demo; public class TestDemo { ??? public static void main(String[] args) throws Exception { ??????? StringBuffer buf = new StringBuffer(); ??????? buf.append("Hello World .") ; ??????? String str = buf.toString() ; ??????? System.out.println(str); ??? } } |
???????? 在String類之中定義了許多的操作方法,同樣,在StringBuffer類之中也定義了許多的操作方法,而且有些方法還是String類所有沒(méi)有的支持。
范例:字符串反轉(zhuǎn)操作,public StringBuffer reverse()
| package cn.mldn.demo; public class TestDemo { ??? public static void main(String[] args) throws Exception { ??????? StringBuffer buf = new StringBuffer(); ??????? buf.append("Hello World .") ; ??????? System.out.println(buf.reverse()); ??? } } |
范例:替換指定范圍內(nèi)的數(shù)據(jù),public StringBuffer replace(int start, int end, String str)
| package cn.mldn.demo; public class TestDemo { ??? public static void main(String[] args) throws Exception { ??????? StringBuffer buf = new StringBuffer(); ??????? buf.append("Hello World .") ; ??????? System.out.println(buf.replace(6, 12, "MLDN")); ??? } } |
范例:在指定位置上插入數(shù)據(jù),public StringBuffer insert(int offset, 數(shù)據(jù)類型 變量)
| package cn.mldn.demo; public class TestDemo { ??? public static void main(String[] args) throws Exception { ??????? StringBuffer buf = new StringBuffer(); ??????? buf.append("World .").insert(0, "Hello ") ; ??????? System.out.println(buf);? ??? } } |
面試題:請(qǐng)解釋String和StringBuffer的區(qū)別?
???????? String的內(nèi)容不可改變,而StringBuffer的內(nèi)容可以改變。
轉(zhuǎn)載于:https://www.cnblogs.com/guwenren/archive/2013/04/15/3021487.html
總結(jié)
以上是生活随笔為你收集整理的Java_StringBuffer类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [链接]C++和Python版本的委托
- 下一篇: 阅读《第31次中国互联网络发展状况统计报