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

資訊專欄INFORMATION COLUMN

Java? 教程(StringBuilder類)

daryl / 1436人閱讀

StringBuilder類

StringBuilder對(duì)象與String對(duì)象類似,只是它可以被修改,在內(nèi)部,這些對(duì)象被視為包含一系列字符的可變長(zhǎng)度數(shù)組,在任何時(shí)候,可以通過方法調(diào)用來改變序列的長(zhǎng)度和內(nèi)容。

除非字符串構(gòu)建器在更簡(jiǎn)單的代碼(參見本節(jié)末尾的示例程序)或更好的性能方面提供優(yōu)勢(shì),否則應(yīng)始終使用字符串,例如,如果需要連接大量字符串,則附加到StringBuilder對(duì)象會(huì)更有效。

長(zhǎng)度和容量

String類一樣,StringBuilder類有一個(gè)length()方法,該方法返回構(gòu)建器中字符序列的長(zhǎng)度。

與字符串不同,每個(gè)字符串構(gòu)建器還具有容量,即已分配的字符空間數(shù),capacity()方法返回的容量始終大于或等于長(zhǎng)度(通常大于),并將根據(jù)需要自動(dòng)擴(kuò)展以適應(yīng)字符串構(gòu)建器的添加。

StringBuilder構(gòu)造函數(shù):

構(gòu)造函數(shù) 描述
StringBuilder() 創(chuàng)建一個(gè)容量為16的空字符串構(gòu)建器(16個(gè)空元素)。
StringBuilder(CharSequence cs) 構(gòu)造一個(gè)字符串構(gòu)建器,其中包含與指定CharSequence相同的字符,以及尾隨CharSequence的額外16個(gè)空元素。
StringBuilder(int initCapacity) 創(chuàng)建具有指定初始容量的空字符串構(gòu)建器。
StringBuilder(String s) 創(chuàng)建一個(gè)字符串構(gòu)建器,其值由指定的字符串初始化,另外還有16個(gè)空元素尾隨該字符串。

例如,以下代碼:

// creates empty builder, capacity 16
StringBuilder sb = new StringBuilder();
// adds 9 character string at beginning
sb.append("Greetings");

將生成一個(gè)長(zhǎng)度為9且容量為16的字符串構(gòu)建器:

StringBuilder類有一些與String類沒有的長(zhǎng)度和容量相關(guān)的方法:

方法 描述
void setLength(int newLength) 設(shè)置字符序列的長(zhǎng)度;
如果newLength小于length(),則截?cái)嘧址蛄兄械氖S嘧址?br>如果newLength大于length(),則在字符序列的末尾添加null字符。
void ensureCapacity(int minCapacity) 確保容量至少等于指定的最小值。

許多操作(例如,append()insert()setLength())可以增加字符串構(gòu)建器中字符序列的長(zhǎng)度,從而使結(jié)果length()大于capacity(),發(fā)生這種情況時(shí),容量會(huì)自動(dòng)增加。

StringBuilder操作

String中不可用的StringBuilder上的主要操作是append()insert()方法,它們被重載以接受任何類型的數(shù)據(jù),每個(gè)都將其參數(shù)轉(zhuǎn)換為字符串,然后將該字符串的字符追加或插入字符串構(gòu)建器中的字符序列,append方法總是在現(xiàn)有字符序列的末尾添加這些字符,而insert方法在指定點(diǎn)添加字符。

以下是StringBuilder類的許多方法。

方法 描述
StringBuilder append(boolean b)
StringBuilder append(char c)
StringBuilder append(char[] str)
StringBuilder append(char[] str, int offset, int len)
StringBuilder append(double d)
StringBuilder append(float f)
StringBuilder append(int i)
StringBuilder append(long lng)
StringBuilder append(Object obj)
StringBuilder append(String s)
將參數(shù)追加到此字符串構(gòu)建器,在附加操作發(fā)生之前,數(shù)據(jù)將轉(zhuǎn)換為字符串。
StringBuilder delete(int start, int end)
StringBuilder deleteCharAt(int index)
第一個(gè)方法在StringBuilder的字符序列中刪除從startend-1(包括)的子序列;
第二種方法刪除位于索引處的字符。
StringBuilder insert(int offset, boolean b)
StringBuilder insert(int offset, char c)
StringBuilder insert(int offset, char[] str)
StringBuilder insert(int index, char[] str, int offset, int len)
StringBuilder insert(int offset, double d)
StringBuilder insert(int offset, float f)
StringBuilder insert(int offset, int i)
StringBuilder insert(int offset, long lng)
StringBuilder insert(int offset, Object obj)
StringBuilder insert(int offset, String s)
將第二個(gè)參數(shù)插入到字符串構(gòu)建器中;
第一個(gè)整數(shù)參數(shù)表示要在其之前插入數(shù)據(jù)的索引;
在插入操作發(fā)生之前,數(shù)據(jù)將轉(zhuǎn)換為字符串。
StringBuilder replace(int start, int end, String s)
void setCharAt(int index, char c)
替換此字符串構(gòu)建器中的指定字符。
StringBuilder reverse() 反轉(zhuǎn)此字符串構(gòu)建器中的字符序列。
String toString() 返回包含構(gòu)建器中的字符序列的字符串。
你可以在StringBuilder對(duì)象上使用任何String方法,首先使用StringBuilder類的toString()方法將字符串構(gòu)建器轉(zhuǎn)換為字符串,然后使用StringBuilder(String str)構(gòu)造函數(shù)將字符串轉(zhuǎn)換回字符串構(gòu)建器。
一個(gè)例子

標(biāo)題為“字符串”一節(jié)中列出的StringDemo程序是一個(gè)示例程序,如果使用StringBuilder而不是String,該程序?qū)⒏行А?/p>

StringDemo反轉(zhuǎn)了一個(gè)回文,下面是它的清單:

public class StringDemo {
    public static void main(String[] args) {
        String palindrome = "Dot saw I was Tod";
        int len = palindrome.length();
        char[] tempCharArray = new char[len];
        char[] charArray = new char[len];
        
        // put original string in an 
        // array of chars
        for (int i = 0; i < len; i++) {
            tempCharArray[i] = 
                palindrome.charAt(i);
        } 
        
        // reverse array of chars
        for (int j = 0; j < len; j++) {
            charArray[j] =
                tempCharArray[len - 1 - j];
        }
        
        String reversePalindrome =
            new String(charArray);
        System.out.println(reversePalindrome);
    }
}

運(yùn)行該程序會(huì)產(chǎn)生以下輸出:

doT saw I was toD

為了完成字符串反轉(zhuǎn),程序?qū)⒆址D(zhuǎn)換為字符數(shù)組(第一個(gè)for循環(huán)),將數(shù)組反轉(zhuǎn)為第二個(gè)數(shù)組(第二個(gè)for循環(huán)),然后轉(zhuǎn)換回字符串。

如果將palindrome字符串轉(zhuǎn)換為字符串構(gòu)建器,則可以在StringBuilder類中使用reverse()方法,它使代碼更簡(jiǎn)單,更易于閱讀:

public class StringBuilderDemo {
    public static void main(String[] args) {
        String palindrome = "Dot saw I was Tod";
         
        StringBuilder sb = new StringBuilder(palindrome);
        
        sb.reverse();  // reverse it
        
        System.out.println(sb);
    }
}

運(yùn)行此程序會(huì)產(chǎn)生相同的輸出:

doT saw I was toD

請(qǐng)注意,println()打印字符串構(gòu)建器,如下所示:

System.out.println(sb);

因?yàn)?b>sb.toString()是隱式調(diào)用的,因?yàn)樗cprintln()調(diào)用中的任何其他對(duì)象一樣。

還有一個(gè)StringBuffer類與StringBuilder類完全相同,但它是線程安全的,因?yàn)樗姆椒ㄊ峭降模€程將在關(guān)于并發(fā)的課程中討論。
上一篇:比較字符串和字符串的部分 下一篇:自動(dòng)裝箱和拆箱

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72907.html

相關(guān)文章

  • Java學(xué)習(xí)筆記3-Number,String,StringBuilder

    摘要:創(chuàng)建字符串教程字符串長(zhǎ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? 教程(字符串)

    字符串 在Java編程中廣泛使用的字符串是一系列字符,在Java編程語(yǔ)言中,字符串是對(duì)象。 Java平臺(tái)提供String類來創(chuàng)建和操作字符串。 創(chuàng)建字符串 創(chuàng)建字符串的最直接方法是編寫: String greeting = Hello world!; 在這種情況下,Hello world!是一個(gè)字符串文字 — 代碼中的一系列字符,用雙引號(hào)括起來,每當(dāng)它在代碼中遇到字符串文字時(shí),編譯器就會(huì)創(chuàng)建一個(gè)帶...

    ThreeWords 評(píng)論0 收藏0
  • 【譯】怎樣在java中定義一個(gè)抽象屬性

    摘要:我們的引擎使用預(yù)定義的分隔符來連接日志中的信息,并存儲(chǔ)在一個(gè)中。在抽象類中定義帶參數(shù)的構(gòu)造函數(shù)在抽象類中定義動(dòng)態(tài)屬性的第一種方法是定義一個(gè)參數(shù)的構(gòu)造函數(shù)。 翻譯:瘋狂的技術(shù)宅原文:http://programmergate.com/def...本文首發(fā)微信公眾號(hào):充實(shí)的腦洞 Abstract關(guān)鍵字通常被用于類和方法,用來把某些行為的實(shí)現(xiàn)委托給子類。由于Java不支持抽象屬性,如果你試圖...

    aervon 評(píng)論0 收藏0
  • Java NIO 之 Channel(通道)

    摘要:通道可以異步讀寫。使用的方法讀取數(shù)據(jù)創(chuàng)建一個(gè)讀數(shù)據(jù)緩沖區(qū)對(duì)象從通道中讀取數(shù)據(jù)使用的方法寫入數(shù)據(jù)創(chuàng)建一個(gè)寫數(shù)據(jù)緩沖區(qū)對(duì)象寫入數(shù)據(jù)關(guān)閉完成使用后,您必須關(guān)閉它。五提供了一種被稱為的新功能,也稱為本地矢量。功能是通道提供的并不是。 歷史回顧: Java NIO 概覽 Java NIO 之 Buffer(緩沖區(qū)) 其他高贊文章: 面試中關(guān)于Redis的問題看這篇就夠了 一文輕松搞懂redis集...

    piglei 評(píng)論0 收藏0
  • SpringBoot整合MybatisPlus的簡(jiǎn)單教程(簡(jiǎn)單整合)

    摘要:最近在研究,順便就會(huì)看看數(shù)據(jù)庫(kù)連接這一塊的知識(shí),所以當(dāng)我發(fā)現(xiàn)有通用和這兩款網(wǎng)絡(luò)上比較火的簡(jiǎn)化開發(fā)的優(yōu)秀軟件之后。先創(chuàng)建一個(gè)的項(xiàng)目,可以參考我之前的文章的簡(jiǎn)單教程一項(xiàng)目的創(chuàng)建。打開文件,將最新的相關(guān)的包都引用進(jìn)來。 最近在研究springboot,順便就會(huì)看看數(shù)據(jù)庫(kù)連接這一塊的知識(shí) ,所以當(dāng)我發(fā)現(xiàn)有通用Mapper和MybatisPlus這兩款網(wǎng)絡(luò)上比較火的簡(jiǎn)化mybatis開發(fā)的優(yōu)秀軟...

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

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

0條評(píng)論

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