摘要:可以調(diào)用方法將其轉(zhuǎn)換為一個(gè)對(duì)象是線程安全的,則沒有實(shí)現(xiàn)線程安全功能,所以性能略高。通過串聯(lián)更方便將該對(duì)象與的對(duì)象進(jìn)行比較。追加字符串插入替換刪除反轉(zhuǎn)輸出輸出改變的長度,將只保留前面部分
String類是不可變類,即一旦一個(gè)String對(duì)象被創(chuàng)建以后,包括在這個(gè)對(duì)象中的字符序列是不可改變的,直至這個(gè)對(duì)象被銷毀
StringBuffer對(duì)象則代表一個(gè)字符序列可變的字符串,當(dāng)一個(gè)StringBuffer被創(chuàng)建以后,通過StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改變這個(gè)字符串對(duì)象的字符序列。可以調(diào)用toString()方法將其轉(zhuǎn)換為一個(gè)String()對(duì)象
StringBuffer是線程安全的,StringBuilder則沒有實(shí)現(xiàn)線程安全功能,所以性能略高。如果需要?jiǎng)?chuàng)建一個(gè)內(nèi)容可變的字符串對(duì)象,則應(yīng)該優(yōu)先考慮使用StringBuilder類
在單線程環(huán)境下應(yīng)該使用StringBuilder來保證較好的性能;當(dāng)需要保證多線程安全時(shí),就應(yīng)該使用StringBuffer
String、StringBuffer和StringBuilder都實(shí)現(xiàn)了CharSequence接口,該接口可認(rèn)為是一個(gè)字符串的協(xié)議接口。
String類提供了大量構(gòu)造器來創(chuàng)建String對(duì)象:
String():創(chuàng)建一個(gè)包含0個(gè)字符串序列的String對(duì)象(并不是返回null)
String(byte[] bytes, Charset charset):使用指定的字符集將指定的byte[]數(shù)組解碼成一個(gè)新的String對(duì)象
String(byte[] bytes, int offset, int length):使用平臺(tái)的默認(rèn)字符集將指定的byte[]數(shù)組從offset開始、長度為Length的子數(shù)組解碼成一個(gè)新的String對(duì)象
String(byte[] bytes, int offset, int length, String charsetName):使用指定的字符集將指定的byte[]數(shù)組從offset開始、長度為Length的子數(shù)組解碼成一個(gè)新的String對(duì)象
String(byte[] bytes, String charsetName):使用指定的字符集將指定的byte[]數(shù)組解碼成一個(gè)新的String對(duì)象
String(char[] value, int offset, int count):將指定的字符數(shù)組從offset開始、長度為count的字符元素連綴成字符串
String(String original):根據(jù)字符串直接量來創(chuàng)建一個(gè)String對(duì)象。新創(chuàng)建的String對(duì)象是該參數(shù)字符串的副本
String(StringBuffer buffer):根據(jù)StringBuffer對(duì)象來創(chuàng)建對(duì)應(yīng)的String對(duì)象
String(StringBuilder builder):根據(jù)StringBuilder對(duì)象來創(chuàng)建對(duì)應(yīng)的String對(duì)象
操作字符串對(duì)象的方法
char charAt(int index):獲取字符串中的某一個(gè)字符,其中的參數(shù) index 指的是字符串中序數(shù)。字符串的序數(shù)從0開始到length()-1
int compareTo (String anotherString ):當(dāng)前String對(duì)象與anotherString比較 。相等返回0;不相等 時(shí),從兩個(gè)字符串第 0 個(gè)字符開始比較,返回第一個(gè)不相等的字符差,另一種情況,較長字符串的前面部分恰巧是較短的字符串,返回它們的長度差
String a1 = new String("abcdefghijklmn"); String a2 = new String("abcdefghij"); String a3 = new String("abcdefghijalmn"); System.out.println("a1.compareTo(a2):"+a1.compareTo(a2)); //返回長度差 4 System.out.println("a1.compareTo(a3):"+a1.compareTo(a3)); //返回"k"-"a"的差 10
String concat(String str):將該String對(duì)象與str 連接在一起。通過“+”串聯(lián)更方便
boolean contentEquals(StringBuffer sb):將該 String對(duì)象與StringBuffer的對(duì)象sb進(jìn)行比較。相等返回 true
static String copyValueOf(char[] data):將字符數(shù)組連綴成字符串,與String(char[] content)構(gòu)造器的功能相同
static String copyValueOf(char[] data, int offset, int count):將char數(shù)組的子數(shù)組中的元素連綴成字符串,與String(char[] value, int offset, int count)構(gòu)造器的功能相同
boolean endsWith(String suffix):返回該字符串是否以suffix結(jié)尾
String f1 = "www.ishuhui.com"; String f2= "com"; System.out.println("f1.endsWith(f2):" + f1.endsWith(f2)); //true
boolean equals(Object anObject):當(dāng)anObject不為空并且與當(dāng)前String對(duì)象一樣,返回 true;否則,返回 false
boolean equalsIgnoreCase(String string):比較字符串與another是否一樣(忽略大小寫)
byte[] getBytes(String charsetName):將該String對(duì)象轉(zhuǎn)換成byte數(shù)組
byte[] getBytes(Charset charset):使用指定字符集,將該String對(duì)象轉(zhuǎn)換成byte數(shù)組
byte[] getBytes():將該String對(duì)象轉(zhuǎn)換成byte數(shù)組,使用默認(rèn)字符集
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):將字符串中從srcBegin開始,到srcEnd結(jié)束的字符負(fù)責(zé)到dst字符數(shù)組中,其中dstBegin為目標(biāo)字符數(shù)組的起始復(fù)制位置
char[] c1 = {"L","I","N"," ","B","o","K","a","i"}; String s8 = new String("Me "); s8.getChars(0, 3, c1, 0); System.out.println(c1);
int hashCode ():返回當(dāng)前字符的哈希表碼
int indexOf(int c):找出c字符在該字符串中第一次出現(xiàn)的位置
int indexOf(int c, int fromIndex):找出c字符在該字符串中從fromIndex開始后第一次出現(xiàn)的位置
int indexOf(String substr):找出substr子字符串在該字符串中第一次出現(xiàn)的位置
int indexOf(String substr, int fromIndex):找出substr子字符串中從fromIndex開始后在該字符串中第一次出現(xiàn)的位置
boolean isEmpty():如果字符串的長度為0,則返回 true
int lastindexOf(int c):找出c字符在該字符串中最后一次出現(xiàn)的位置
int lastindexOf(int c, int fromIndex):找出c字符在該字符串中從fromIndex開始后最后一次出現(xiàn)的位置
int lastindexOf(String substr):找出substr子字符串在該字符串中最后一次出現(xiàn)的位置
int lastindexOf(String substr, int fromIndex):找出substr子字符串中從fromIndex開始后在該字符串中最后一次出現(xiàn)的位置
int length():返回字符串的字符個(gè)數(shù)
String replace(char oldChar, char newChar):將字符串中的第一個(gè)oldChar替換成newChar
boolean startsWith(String prefix):該String對(duì)象是否以prefix開始
boolean startsWith(String prefix, int toffset):該String對(duì)象從toffse 位置算起,是否以 prefix開始
String substring(int beginIndex):取從beginIndex位置開始到結(jié)束的子字符串
String substring(int beginIndex, int endIndex)取從beginIndex位置開始到endIndex位置結(jié)束的子字符串
char[] toCharArray():將該String對(duì)象轉(zhuǎn)換成char數(shù)組
String toLowerCase():將字符串轉(zhuǎn)換成小寫
String toUpperCase():將字符串轉(zhuǎn)換成大寫
String trim():移除字符串中的空格
static String valueOf(X x):將基本類型值轉(zhuǎn)換成字符串的方法
String類是不可變的,String的實(shí)例一旦生成就不會(huì)再改變
String str1 = "java"; str1 = str1 + "struts"; str1 = str1 + "spring";
上面程序除了使用了3個(gè)字符串直接量之外,還會(huì)額外生成2個(gè)字符串直接量"javastruts"和"javastrutsspring",程序中的str1依次指向3個(gè)不同的字符串對(duì)象
因?yàn)镾tring是不可變的,所以會(huì)產(chǎn)生很多臨時(shí)變量,使用StringBuffer和StringBuilder就可以避免這個(gè)問題。
public class StringBuilderTest { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); // 追加字符串 sb.append("java");//sb = "java" // 插入 sb.insert(0 , "hello "); // sb="hello java" // 替換 sb.replace(5, 6, ","); // sb="hello, java" // 刪除 sb.delete(5, 6); // sb="hellojava" System.out.println(sb); // 反轉(zhuǎn) sb.reverse(); // sb="avajolleh" System.out.println(sb); System.out.println(sb.length()); // 輸出9 System.out.println(sb.capacity()); // 輸出16 // 改變StringBuilder的長度,將只保留前面部分 sb.setLength(5); // sb="avajo" System.out.println(sb); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/66342.html
摘要:官方說明將一個(gè)或多個(gè)類文件進(jìn)行分解。顯示靜態(tài)常量為每個(gè)類中的方法打印反匯編代碼例如字節(jié)碼指令組成。在結(jié)果的行直接進(jìn)行多次的拼接看看最后編譯會(huì)是神馬的這句話是對(duì)應(yīng)聲明了一個(gè),然后每次拼接實(shí)際使用的是的方法。 Oracle官方說明: javap 將一個(gè)或多個(gè)類文件進(jìn)行分解。 使用簡要說明 javap [options] classfile... options 命令行選項(xiàng),詳細(xì)查看后面...
摘要:當(dāng)然大多數(shù)情況下就是我們是在單線程下進(jìn)行的操作,所以大多數(shù)情況下是建議用而不用的,就是速度的原因。 第三階段 JAVA常見對(duì)象的學(xué)習(xí) StringBuffer和StringBuilder類 (一) StringBuffer類的概述 (1) 基本概述 下文以StringBuffer為例 前面我們用字符串做拼接,比較耗時(shí)并且也耗內(nèi)存(每次都會(huì)構(gòu)造一個(gè)新的string對(duì)象),而這種拼接操作又...
摘要:創(chuàng)建字符串教程字符串長度用于獲取有關(guān)對(duì)象的信息的方法稱為訪問器方法。類在中被提出,它和之間的最大不同在于的方法不是線程安全的不能同步訪問。然而在應(yīng)用程序要求線程安全的情況下,則必須使用類。 一般地,當(dāng)需要使用數(shù)字的時(shí)候,我們通常使用內(nèi)置數(shù)據(jù)類型,如:byte、int、long、double 等。 在實(shí)際開發(fā)過程中,我們經(jīng)常會(huì)遇到需要使用對(duì)象,而不是內(nèi)置數(shù)據(jù)類型的情形。為了解決這個(gè)問題,...
摘要:是可以序列化的標(biāo)志。構(gòu)造器可以看出,默認(rèn)的容量大小為。不過這個(gè)構(gòu)造器是具有包訪問權(quán)限,一般情況下是不能調(diào)用的。總結(jié)和都是可變字符串,前者線程不安全,后者線程安全。和的大部分方法均調(diào)用父類的實(shí)現(xiàn)。其擴(kuò)容機(jī)制首先是把容量變?yōu)樵瓉砣萘康谋都印? 簡介 StringBuilder與StringBuffer是兩個(gè)常用的操作字符串的類。大家都知道,StringBuilder是線程不安全的,而Stri...
摘要:與類基本相同,都是可變字符換字符串序列,不同點(diǎn)是是線程安全的,是線程不安全的。和區(qū)別在大部分情況下是線程安全的可變字符序列。在程序中可將字符串緩沖區(qū)安全地用于多線程。 轉(zhuǎn)載自飄過的小牛 我們先要記住三者的特征: String 字符串常量 StringBuffer 字符串變量(線程安全) StringBuilder 字符串變量(非線程安全) 一、定義 showImg(/...
閱讀 2831·2021-09-28 09:45
閱讀 1507·2021-09-26 10:13
閱讀 897·2021-09-04 16:45
閱讀 3661·2021-08-18 10:21
閱讀 1083·2019-08-29 15:07
閱讀 2633·2019-08-29 14:10
閱讀 3146·2019-08-29 13:02
閱讀 2458·2019-08-29 12:31