成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java String、StringBuffer和StringBuilder類

Jason / 2352人閱讀

摘要:可以調(diào)用方法將其轉(zhuǎn)換為一個對象是線程安全的,則沒有實現(xiàn)線程安全功能,所以性能略高。通過串聯(lián)更方便將該對象與的對象進行比較。追加字符串插入替換刪除反轉(zhuǎn)輸出輸出改變的長度,將只保留前面部分

String類是不可變類,即一旦一個String對象被創(chuàng)建以后,包括在這個對象中的字符序列是不可改變的,直至這個對象被銷毀

StringBuffer對象則代表一個字符序列可變的字符串,當(dāng)一個StringBuffer被創(chuàng)建以后,通過StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改變這個字符串對象的字符序列。可以調(diào)用toString()方法將其轉(zhuǎn)換為一個String()對象

StringBuffer是線程安全的,StringBuilder則沒有實現(xiàn)線程安全功能,所以性能略高。如果需要創(chuàng)建一個內(nèi)容可變的字符串對象,則應(yīng)該優(yōu)先考慮使用StringBuilder類

在單線程環(huán)境下應(yīng)該使用StringBuilder來保證較好的性能;當(dāng)需要保證多線程安全時,就應(yīng)該使用StringBuffer

String、StringBuffer和StringBuilder都實現(xiàn)了CharSequence接口,該接口可認為是一個字符串的協(xié)議接口。

String類提供了大量構(gòu)造器來創(chuàng)建String對象:

String():創(chuàng)建一個包含0個字符串序列的String對象(并不是返回null)

String(byte[] bytes, Charset charset):使用指定的字符集將指定的byte[]數(shù)組解碼成一個新的String對象

String(byte[] bytes, int offset, int length):使用平臺的默認字符集將指定的byte[]數(shù)組從offset開始、長度為Length的子數(shù)組解碼成一個新的String對象

String(byte[] bytes, int offset, int length, String charsetName):使用指定的字符集將指定的byte[]數(shù)組從offset開始、長度為Length的子數(shù)組解碼成一個新的String對象

String(byte[] bytes, String charsetName):使用指定的字符集將指定的byte[]數(shù)組解碼成一個新的String對象

String(char[] value, int offset, int count):將指定的字符數(shù)組從offset開始、長度為count的字符元素連綴成字符串

String(String original):根據(jù)字符串直接量來創(chuàng)建一個String對象。新創(chuàng)建的String對象是該參數(shù)字符串的副本

String(StringBuffer buffer):根據(jù)StringBuffer對象來創(chuàng)建對應(yīng)的String對象

String(StringBuilder builder):根據(jù)StringBuilder對象來創(chuàng)建對應(yīng)的String對象

操作字符串對象的方法

char charAt(int index):獲取字符串中的某一個字符,其中的參數(shù) index 指的是字符串中序數(shù)。字符串的序數(shù)從0開始到length()-1

int compareTo (String anotherString ):當(dāng)前String對象與anotherString比較 。相等返回0;不相等 時,從兩個字符串第 0 個字符開始比較,返回第一個不相等的字符差,另一種情況,較長字符串的前面部分恰巧是較短的字符串,返回它們的長度差

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對象與str 連接在一起。通過“+”串聯(lián)更方便

boolean contentEquals(StringBuffer sb):將該 String對象與StringBuffer的對象sb進行比較。相等返回 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對象一樣,返回 true;否則,返回 false

boolean equalsIgnoreCase(String string):比較字符串與another是否一樣(忽略大小寫)

byte[] getBytes(String charsetName):將該String對象轉(zhuǎn)換成byte數(shù)組

byte[] getBytes(Charset charset):使用指定字符集,將該String對象轉(zhuǎn)換成byte數(shù)組

byte[] getBytes():將該String對象轉(zhuǎn)換成byte數(shù)組,使用默認字符集

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):將字符串中從srcBegin開始,到srcEnd結(jié)束的字符負責(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():返回字符串的字符個數(shù)

String replace(char oldChar, char newChar):將字符串中的第一個oldChar替換成newChar

boolean startsWith(String prefix):該String對象是否以prefix開始

boolean startsWith(String prefix, int toffset):該String對象從toffse 位置算起,是否以 prefix開始

String substring(int beginIndex):取從beginIndex位置開始到結(jié)束的子字符串

String substring(int beginIndex, int endIndex)取從beginIndex位置開始到endIndex位置結(jié)束的子字符串

char[] toCharArray():將該String對象轉(zhuǎn)換成char數(shù)組

String toLowerCase():將字符串轉(zhuǎn)換成小寫

String toUpperCase():將字符串轉(zhuǎn)換成大寫

String trim():移除字符串中的空格

static String valueOf(X x):將基本類型值轉(zhuǎn)換成字符串的方法

String類是不可變的,String的實例一旦生成就不會再改變

String str1 = "java";
str1 = str1 + "struts";
str1 = str1 + "spring";

上面程序除了使用了3個字符串直接量之外,還會額外生成2個字符串直接量"javastruts"和"javastrutsspring",程序中的str1依次指向3個不同的字符串對象
因為String是不可變的,所以會產(chǎn)生很多臨時變量,使用StringBuffer和StringBuilder就可以避免這個問題。

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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/66342.html

相關(guān)文章

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

    摘要:官方說明將一個或多個類文件進行分解。顯示靜態(tài)常量為每個類中的方法打印反匯編代碼例如字節(jié)碼指令組成。在結(jié)果的行直接進行多次的拼接看看最后編譯會是神馬的這句話是對應(yīng)聲明了一個,然后每次拼接實際使用的是的方法。 Oracle官方說明: javap 將一個或多個類文件進行分解。 使用簡要說明 javap [options] classfile... options 命令行選項,詳細查看后面...

    wua_wua2012 評論0 收藏0
  • StringStringBuilder、StringBuffer的愛恨情仇

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

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

    摘要:創(chuàng)建字符串教程字符串長度用于獲取有關(guān)對象的信息的方法稱為訪問器方法。類在中被提出,它和之間的最大不同在于的方法不是線程安全的不能同步訪問。然而在應(yīng)用程序要求線程安全的情況下,則必須使用類。 一般地,當(dāng)需要使用數(shù)字的時候,我們通常使用內(nèi)置數(shù)據(jù)類型,如:byte、int、long、double 等。 在實際開發(fā)過程中,我們經(jīng)常會遇到需要使用對象,而不是內(nèi)置數(shù)據(jù)類型的情形。為了解決這個問題,...

    pkhope 評論0 收藏0
  • Java StringBuilderStringBuffer源碼分析

    摘要:是可以序列化的標(biāo)志。構(gòu)造器可以看出,默認的容量大小為。不過這個構(gòu)造器是具有包訪問權(quán)限,一般情況下是不能調(diào)用的??偨Y(jié)和都是可變字符串,前者線程不安全,后者線程安全。和的大部分方法均調(diào)用父類的實現(xiàn)。其擴容機制首先是把容量變?yōu)樵瓉砣萘康谋都印? 簡介 StringBuilder與StringBuffer是兩個常用的操作字符串的類。大家都知道,StringBuilder是線程不安全的,而Stri...

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

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

    ShowerSun 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<