<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java `StringBuilder` 原文:http://zetcode.com/java/stringbuilder/ Java `StringBuilder`教程顯示了如何在 Java 中使用`StringBuilder`。 Java `String`對象是不可變的。 只能創建原始字符串的修飾副本。 當我們需要就地修改字符串時,可以使用`StringBuilder`。 ## `StringBuilder` `StringBuilder`是可變的字符序列。 當我們想就地修改 Java 字符串時,使用`StringBuilder`。 `StringBuffer`是類似于`StringBuilder`的線程安全等效項。 `StringBuilder`具有允許修改字符串的方法,例如`append()`,`insert()`或`replace()`。 ## Java `StringBuilder`構造器 `StringBuilder`具有四個構造器: | 構造器 | 描述 | | --- | --- | | `StringBuilder()` | 創建一個初始容量為 16 個字符的空字符串構建器 | | `StringBuilder(CharSequence seq)` | 從`CharSequence`創建一個字符串生成器 | | `StringBuilder(int capcity)` | 用指定的首字母創建一個空的字符串生成器 | | `StringBuilder(String str)` | 從指定的字符串創建字符串生成器 | ## Java `StringBuilder`是可變的 Java `String`是不可變的,而`StringBuilder`是可變的。 `MutableImmutableEx.java` ```java package com.zetcode; public class MutableImmutableEx { public static void main(String[] args) { var word = "rock"; var word2 = word.replace('r', 'd'); System.out.println(word2); var builder = new StringBuilder("rock"); builder.replace(0, 1, "d"); System.out.println(builder); } } ``` 該示例演示了`String`和`StringBuilder`之間的主要區別。 ```java var word2 = word.replace('r', 'd'); ``` Java `String`具有`replace()`方法,但它不會修改原始字符串。 而是創建修改后的副本。 ```java var builder = new StringBuilder("rock"); builder.replace(0, 1, "d"); ``` 另一方面,`StringBuilder`替換字符串。 ```java dock dock ``` 這是輸出。 ## Java `StringBuilder`附加方法 `StringBuilder`包含幾個重載`append()`方法,它們在字符串的末尾添加一個值。 `StringBuilderEx.java` ```java package com.zetcode; import java.util.stream.LongStream; public class StringBuilderAppendEx { private final static long MAX_VAL = 500; public static void main(String[] args) { var builder = new StringBuilder(); var sum = LongStream.rangeClosed(0, MAX_VAL).sum(); LongStream.rangeClosed(1, MAX_VAL).forEach(e -> { builder.append(e); if (e % 10 == 0) { builder.append("\n"); } if (e < MAX_VAL) { builder.append(" + "); } else { builder.append(" = "); } }); builder.append(sum); System.out.println(builder); } } ``` 該示例從數百個小字符串中構建一個大字符串。 字符串的格式如下:`1 + 2 + 3 + ... + MAX_VAL = SUM`。 ```java var builder = new StringBuilder(); ``` 空的`StringBuilder`被創建。 ```java LongStream.rangeClosed(1, MAX_VAL).forEach(e -> { ``` 將創建一個值范圍`1..MAX_VAL`。 我們使用`forEach()`方法迭代這些值。 ```java builder.append(e); ``` 我們使用`append()`方法將當前值附加到字符串生成器。 ```java if (e % 10 == 0) { builder.append("\n"); } ``` 為了使輸出適合屏幕,我們在每十個值之后添加一個換行符。 ```java if (e < MAX_VAL) { builder.append(" + "); } else { builder.append(" = "); } ``` 在這些值之間,我們添加``+``或`"="`字符。 ```java builder.append(sum); ``` 在字符串的末尾,我們添加值的總和。 ```java System.out.println(builder); ``` 最后,字符串被打印到控制臺。 ## `StringBuilder`插入方法 `insert()`方法用于將字符串插入構建器的指定位置。 `StringBuilderInsertEx.java` ```java package com.zetcode; public class StringBuilderInsertEx { public static void main(String[] args) { var sentence = "There is a red fox in the forest."; var builder = new StringBuilder(sentence); builder.insert(19, "and a wolf "); System.out.println(builder); } } ``` 該示例使用`insert()`方法將字符串插入句子中。 ```java There is a red fox and a wolf in the forest. ``` 我們創建了這句話。 ## 獲取子字符串的索引 `indexOf()`方法返回第一次出現的子字符串,而`lastIndexOf()`方法返回最后出現的子字符串。 `StringBuilderIndexesEx.java` ```java package com.zetcode; public class StringBuilderIndexesEx { public static void main(String[] args) { var builder = new StringBuilder(); builder.append("There is a wolf in the forest. "); builder.append("The wolf appeared very old. "); builder.append("I never saw a wild wolf in my life."); var term = "wolf"; int firstIdx = builder.indexOf(term); int firstIdx2 = builder.indexOf(term, 15); System.out.format("First occurrence of %s %d%n", term, firstIdx); System.out.format("First occurrence of %s %d%n", term, firstIdx2); int lastIdx = builder.lastIndexOf(term); int lastIdx2 = builder.lastIndexOf(term, 15); System.out.format("Last occurrence of %s %d%n", term, lastIdx); System.out.format("Last occurrence of %s %d%n", term, lastIdx2); System.out.println(builder); } } ``` 該示例使用`indexOf()`和`lastIndexOf()`方法來獲取`"wolf"`子字符串的索引。 ```java var builder = new StringBuilder(); builder.append("There is a wolf in the forest. "); builder.append("The wolf appeared very old. "); builder.append("I never saw a wild wolf in my life."); ``` 我們使用`append()`方法創建一個字符串生成器。 ```java int firstIdx = builder.indexOf(term); ``` 我們從生成器中首次獲得`"wolf"`一詞。 ```java int firstIdx2 = builder.indexOf(term, 15); ``` 從索引 15 開始,我們從構建器中首次獲得`"wolf"`術語。 ```java int lastIdx = builder.lastIndexOf(term); int lastIdx2 = builder.lastIndexOf(term, 15); ``` 同樣,我們獲得`"wolf"`子字符串的最后一次出現。 ```java First occurrence of wolf 11 First occurrence of wolf 35 Last occurrence of wolf 78 Last occurrence of wolf 11 There is a wolf in the forest. The wolf appeared very old. I never saw a wild wolf in my life. ``` 這是輸出。 ## `StringBuilder`替換方法 `replace()`方法用指定的新字符串替換字符串生成器中的子字符串。 `StringBuilderReplaceEx.java` ```java package com.zetcode; public class StringBuilderReplaceEx { public static void main(String[] args) { var sentence = "I saw a red fox running into the forest."; var builder = new StringBuilder(sentence); var term = "fox"; var newterm = "dog"; int idx = builder.indexOf(term); int len = term.length(); builder.replace(idx, idx + len, newterm); System.out.println(builder); } } ``` 該示例將`"fox"`子字符串替換為`"dog"`字符串。 ```java int idx = builder.indexOf(term); ``` 我們找到要替換的子字符串的開始索引。 ```java int len = term.length(); ``` 在我們的操作中,我們需要知道子字符串的長度。 ```java builder.replace(idx, idx + len, newterm); ``` 我們稱為`replace()`方法。 第一個參數是要刪除的子字符串的開始索引,第二個參數是要刪除的子字符串的結束索引。 第三個參數是新字符串。 ## `StringBuilder`刪除字符 在字符串構建器中,有兩種刪除字符的方法。 `StringBuilderRemoveEx.java` ```java package com.zetcode; public class StringBuilderRemoveEx { public static void main(String[] args) { var sentence = "There is a red fox in the forest."; var builder = new StringBuilder(sentence); builder.delete(11, 14); System.out.println(builder); builder.deleteCharAt(11); System.out.println(builder); } } ``` 該示例從字符串中刪除一些字符。 ```java builder.delete(11, 14); ``` 使用`delete()`方法,我們刪除了由索引指定的子字符串。 ```java builder.deleteCharAt(11); ``` 使用`delete()`方法,我們刪除一個字符; 在我們的情況下,它是多余的空格字符。 ```java There is a fox in the forest. There is a fox in the forest. ``` 這是輸出。 ## `StringBuilder`子字符串 使用`substring()`方法可以從字符串返回子字符串。 `StringBuilderSubstringsEx.java` ```java package com.zetcode; public class StringBuilderSubstringsEx { public static void main(String[] args) { var sentence = "There is a red fox in the forest."; var builder = new StringBuilder(sentence); var word = builder.substring(15, 18); System.out.println(word); var sbstr = builder.substring(15); System.out.println(sbstr); } } ``` 在示例中,我們檢索了兩個子字符串。 ```java var word = builder.substring(15, 18); ``` 該行檢索起始索引為 15 且終止索引為 18 的子字符串。 ```java var sbstr = builder.substring(15); ``` 在這里,我們檢索從索引 15 到句子結尾的子字符串。 ```java fox fox in the forest. ``` 這是輸出。 在本教程中,我們使用了 Java `StringBuilder`。 您可能也對相關教程感興趣: [Java 教程](/lang/java/), [Java 拆分字符串教程](/java/splitstring), [Java 中的`HashMap`迭代](/java/hashmapiterate/), [Java `ArrayList`教程](/articles/javaarraylist/) , [Java `HashSet`教程](/java/hashset), [Java `NumberFormat`教程](/java/numberformat/), [Java8 `forEach`教程](/articles/java8foreach/),[讀取 Java 文本文件](/articles/javareadtext/)和[用 Java 讀取和編寫 ICO 圖像](/articles/javaico/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看