国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java String、StringBuffer和StringBuilder類

Jason / 2298人閱讀

摘要:可以調(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

相關(guān)文章

  • 從字節(jié)碼角度看StringStringBuffer、StringBuilder的不同

    摘要:官方說明將一個(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ì)查看后面...

    wua_wua2012 評(píng)論0 收藏0
  • StringStringBuilder、StringBuffer的愛恨情仇

    摘要:當(dāng)然大多數(shù)情況下就是我們是在單線程下進(jìn)行的操作,所以大多數(shù)情況下是建議用而不用的,就是速度的原因。 第三階段 JAVA常見對(duì)象的學(xué)習(xí) StringBuffer和StringBuilder類 (一) StringBuffer類的概述 (1) 基本概述 下文以StringBuffer為例 前面我們用字符串做拼接,比較耗時(shí)并且也耗內(nèi)存(每次都會(huì)構(gòu)造一個(gè)新的string對(duì)象),而這種拼接操作又...

    stormjun 評(píng)論0 收藏0
  • Java學(xué)習(xí)筆記3-Number,String,StringBuilder

    摘要:創(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è)問題,...

    pkhope 評(píng)論0 收藏0
  • Java StringBuilderStringBuffer源碼分析

    摘要:是可以序列化的標(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...

    wangbjun 評(píng)論0 收藏0
  • 淺談 Java 字符串(String, StringBuffer, StringBuilder)

    摘要:與類基本相同,都是可變字符換字符串序列,不同點(diǎn)是是線程安全的,是線程不安全的。和區(qū)別在大部分情況下是線程安全的可變字符序列。在程序中可將字符串緩沖區(qū)安全地用于多線程。 轉(zhuǎn)載自飄過的小牛 我們先要記住三者的特征: String 字符串常量 StringBuffer 字符串變量(線程安全) StringBuilder 字符串變量(非線程安全) 一、定義 showImg(/...

    ShowerSun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<