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