StringBuilder 是一个可变的字符序列。它继承于AbstractStringBuilder,实现了CharSequence接口。
StringBuilder是非线程安全的。附件为大家提供了源代码,可以下载查看。
下面为大家提供一些实际的demo操作例子:
/** * StringBuilder 演示程序 * @author zhouguohui */ import java.util.HashMap; public class StringBuilderTest { public static void main(String[] args) { testOtherAPIs() ; testIndexAPIs() ; testInsertAPIs() ; testAppendAPIs() ; testReplaceAPIs() ; testDeleteAPIs() ; } /** * StringBuilder 的其它API示例 */ private static void testOtherAPIs() { System.out.println("-------------------------------- testOtherAPIs --------------------------------"); StringBuilder sbuilder = new StringBuilder("0123456789"); int cap = sbuilder.capacity(); System.out.printf("cap=%d\n", cap); char c = sbuilder.charAt(6); System.out.printf("c=%c\n", c); char[] carr = new char[4]; sbuilder.getChars(3, 7, carr, 0); for (int i=0; i<carr.length; i++) System.out.printf("carr[%d]=%c ", i, carr[i]); System.out.println(); System.out.println(); } /** * StringBuilder 中index相关API演示 */ private static void testIndexAPIs() { System.out.println("-------------------------------- testIndexAPIs --------------------------------"); StringBuilder sbuilder = new StringBuilder("abcAbcABCabCaBcAbCaBCabc"); System.out.printf("sbuilder=%s\n", sbuilder); // 1. 从前往后,找出"bc"第一次出现的位置 System.out.printf("%-30s = %d\n", "sbuilder.indexOf(\"bc\")", sbuilder.indexOf("bc")); // 2. 从位置5开始,从前往后,找出"bc"第一次出现的位置 System.out.printf("%-30s = %d\n", "sbuilder.indexOf(\"bc\", 5)", sbuilder.indexOf("bc", 5)); // 3. 从后往前,找出"bc"第一次出现的位置 System.out.printf("%-30s = %d\n", "sbuilder.lastIndexOf(\"bc\")", sbuilder.lastIndexOf("bc")); // 4. 从位置4开始,从后往前,找出"bc"第一次出现的位置 System.out.printf("%-30s = %d\n", "sbuilder.lastIndexOf(\"bc\", 4)", sbuilder.lastIndexOf("bc", 4)); System.out.println(); } /** * StringBuilder 的replace()示例 */ private static void testReplaceAPIs() { System.out.println("-------------------------------- testReplaceAPIs ------------------------------"); StringBuilder sbuilder; sbuilder = new StringBuilder("0123456789"); sbuilder.replace(0, 3, "ABCDE"); System.out.printf("sbuilder=%s\n", sbuilder); sbuilder = new StringBuilder("0123456789"); sbuilder.reverse(); System.out.printf("sbuilder=%s\n", sbuilder); sbuilder = new StringBuilder("0123456789"); sbuilder.setCharAt(0, 'M'); System.out.printf("sbuilder=%s\n", sbuilder); System.out.println(); } /** * StringBuilder 的delete()示例 */ private static void testDeleteAPIs() { System.out.println("-------------------------------- testDeleteAPIs -------------------------------"); StringBuilder sbuilder = new StringBuilder("0123456789"); // 删除位置0的字符,剩余字符是“123456789”。 sbuilder.deleteCharAt(0); // 删除位置3(包括)到位置6(不包括)之间的字符,剩余字符是“123789”。 sbuilder.delete(3,6); // 获取sb中从位置1开始的字符串 String str1 = sbuilder.substring(1); // 获取sb中从位置3(包括)到位置5(不包括)之间的字符串 String str2 = sbuilder.substring(3, 5); // 获取sb中从位置3(包括)到位置5(不包括)之间的字符串,获取的对象是CharSequence对象,此处转型为String String str3 = (String)sbuilder.subSequence(3, 5); System.out.printf("sbuilder=%s\nstr1=%s\nstr2=%s\nstr3=%s\n", sbuilder, str1, str2, str3); } /** * StringBuilder 的insert()示例 */ private static void testInsertAPIs() { System.out.println("-------------------------------- testInsertAPIs -------------------------------"); StringBuilder sbuilder = new StringBuilder(); // 在位置0处插入字符数组 sbuilder.insert(0, new char[]{'a','b','c','d','e'}); // 在位置0处插入字符数组。0表示字符数组起始位置,3表示长度 sbuilder.insert(0, new char[]{'A','B','C','D','E'}, 0, 3); // 在位置0处插入float sbuilder.insert(0, 1.414f); // 在位置0处插入double sbuilder.insert(0, 3.14159d); // 在位置0处插入boolean sbuilder.insert(0, true); // 在位置0处插入char sbuilder.insert(0, '\n'); // 在位置0处插入int sbuilder.insert(0, 100); // 在位置0处插入long sbuilder.insert(0, 12345L); // 在位置0处插入StringBuilder对象 sbuilder.insert(0, new StringBuilder("StringBuilder")); // 在位置0处插入StringBuilder对象。6表示被在位置0处插入对象的起始位置(包括),13是结束位置(不包括) sbuilder.insert(0, new StringBuilder("STRINGBUILDER"), 6, 13); // 在位置0处插入StringBuffer对象。 sbuilder.insert(0, new StringBuffer("StringBuffer")); // 在位置0处插入StringBuffer对象。6表示被在位置0处插入对象的起始位置(包括),12是结束位置(不包括) sbuilder.insert(0, new StringBuffer("STRINGBUFFER"), 6, 12); // 在位置0处插入String对象。 sbuilder.insert(0, "String"); // 在位置0处插入String对象。1表示被在位置0处插入对象的起始位置(包括),6是结束位置(不包括) sbuilder.insert(0, "0123456789", 1, 6); sbuilder.insert(0, '\n'); // 在位置0处插入Object对象。此处以HashMap为例 HashMap map = new HashMap(); map.put("1", "one"); map.put("2", "two"); map.put("3", "three"); sbuilder.insert(0, map); System.out.printf("%s\n\n", sbuilder); } /** * StringBuilder 的append()示例 */ private static void testAppendAPIs() { System.out.println("-------------------------------- testAppendAPIs -------------------------------"); StringBuilder sbuilder = new StringBuilder(); // 追加字符数组 sbuilder.append(new char[]{'a','b','c','d','e'}); // 追加字符数组。0表示字符数组起始位置,3表示长度 sbuilder.append(new char[]{'A','B','C','D','E'}, 0, 3); // 追加float sbuilder.append(1.414f); // 追加double sbuilder.append(3.14159d); // 追加boolean sbuilder.append(true); // 追加char sbuilder.append('\n'); // 追加int sbuilder.append(100); // 追加long sbuilder.append(12345L); // 追加StringBuilder对象 sbuilder.append(new StringBuilder("StringBuilder")); // 追加StringBuilder对象。6表示被追加对象的起始位置(包括),13是结束位置(不包括) sbuilder.append(new StringBuilder("STRINGBUILDER"), 6, 13); // 追加StringBuffer对象。 sbuilder.append(new StringBuffer("StringBuffer")); // 追加StringBuffer对象。6表示被追加对象的起始位置(包括),12是结束位置(不包括) sbuilder.append(new StringBuffer("STRINGBUFFER"), 6, 12); // 追加String对象。 sbuilder.append("String"); // 追加String对象。1表示被追加对象的起始位置(包括),6是结束位置(不包括) sbuilder.append("0123456789", 1, 6); sbuilder.append('\n'); // 追加Object对象。此处以HashMap为例 HashMap map = new HashMap(); map.put("1", "one"); map.put("2", "two"); map.put("3", "three"); sbuilder.append(map); sbuilder.append('\n'); // 追加unicode编码 sbuilder.appendCodePoint(0x5b57); // 0x5b57是“字”的unicode编码 sbuilder.appendCodePoint(0x7b26); // 0x7b26是“符”的unicode编码 sbuilder.appendCodePoint(0x7f16); // 0x7f16是“编”的unicode编码 sbuilder.appendCodePoint(0x7801); // 0x7801是“码”的unicode编码 System.out.printf("%s\n\n", sbuilder); } }
运行结果为:
-------------------------------- testOtherAPIs -------------------------------- cap=26 c=6 carr[0]=3 carr[1]=4 carr[2]=5 carr[3]=6 -------------------------------- testIndexAPIs -------------------------------- sbuilder=abcAbcABCabCaBcAbCaBCabc sbuilder.indexOf("bc") = 1 sbuilder.indexOf("bc", 5) = 22 sbuilder.lastIndexOf("bc") = 22 sbuilder.lastIndexOf("bc", 4) = 4 -------------------------------- testInsertAPIs ------------------------------- {3=three, 2=two, 1=one} 12345StringBUFFERStringBufferBUILDERStringBuilder12345100 true3.141591.414ABCabcde -------------------------------- testAppendAPIs ------------------------------- abcdeABC1.4143.14159true 10012345StringBuilderBUILDERStringBufferBUFFERString12345 {3=three, 2=two, 1=one} 字符编码 -------------------------------- testReplaceAPIs ------------------------------ sbuilder=ABCDE3456789 sbuilder=9876543210 sbuilder=M123456789 -------------------------------- testDeleteAPIs ------------------------------- sbuilder=123789 str1=23789 str2=78 str3=78
相关推荐
Java 中的 StringBuilder 用法详解 Java 中的 StringBuilder 是一个可变的字符串对象,主要用于字符串的操作和修改。下面将详细介绍 StringBuilder 的用法和常用方法。 StringBuilder 的创建 可以使用重载的构造...
在Java编程语言中,`CharSequence`是一个接口,它是字符序列的抽象基类,包括`String`、`StringBuffer`和`StringBuilder`等类。理解这些类的特点和用途是优化程序性能的关键。以下是对这些概念的详细解释: 1. `...
Java StringBuilder类详解及简单实例 Java StringBuilder类是Java语言中的一种字符串操作类,它提供了多种字符串操作方法,如追加、插入、替换、删除等。下面将详细介绍Java StringBuilder类的详解及简单实例。 一...
### Java中的StringBuilder详解 在Java编程语言中,`StringBuilder`是一个非常重要的类,它提供了一种高效地构建和操作字符串的方式。与`String`不同,`StringBuilder`对象是可变的,这意味着可以在不创建新对象的...
### Java操作Excel详解 #### 一、Java Excel API简介 Java Excel API是一个强大的开源库,允许开发者使用Java语言轻松地创建、更新以及读取Excel文件。这个库支持多种Excel文件格式,包括较旧版本(如.xls)和较新...
### Java加密技术详解:以MD5为例 在Java中,加密技术是确保数据安全和完整性的关键工具之一。本文将深入探讨Java中的加密技术,特别是MD5加密算法,通过实例和代码片段,帮助读者理解其工作原理及如何在实际项目中...
Java Bug模式详解主要涵盖的是Java编程中常见的错误和陷阱,这些错误往往会导致程序运行异常或者性能下降。在软件开发过程中,理解和避免这些Bug模式对于提高代码质量和效率至关重要。本资源包含一本PDF电子书《Java...
Java方向详解版技术指导手册 Java概述 Java是一种高级的编程语言,具有跨平台、面向对象、简单易学、安全可靠等特点。Java技术平台主要包括JavaSE(Standard Edition)、JavaEE(Enterprise Edition)和JavaME...
在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的重要类,它们各有特点,适用于不同的场景。这里我们将深入探讨这三个类的区别、特性和使用策略。 首先,String类是不可变的,这意味着...
Java中的`StringBuffer`类是线程安全的字符串操作类,它是`StringBuilder`的一个线程安全版本。在多线程环境中,当多个线程同时修改一个字符串时,`StringBuffer`通过内部同步机制确保了数据的一致性,避免了线程间...
#### 二、StringBuilder类详解 **2.1 StringBuilder简介** `StringBuilder`是Java提供的一个可变字符串类,它可以更高效地处理字符串的拼接操作。相比于`String`,`StringBuilder`在进行多次字符串拼接时,能显著...
Java String 用法详解 字符串是 Java 中最重要的类,了解 String 的用法是 Java 开发者的必备知识。本文将从多个角度介绍 String 的用法,包括字符串的不可变性、字符串常量池、+号和 StringBuilder 等。 字符串的...
本实例“Java字符串详解 Java实例20”将深入探讨Java中的字符串处理机制,包括其创建、操作以及性能优化等方面的知识。 一、字符串的创建与初始化 在Java中,字符串是对象,它们被封装在`String`类中。字符串可以...
Java中的字符串处理是编程中常见的任务,涉及到三个关键类:String、StringBuffer和StringBuilder。它们在功能上相似,但有着重要的区别,主要体现在字符串的可变性、线程安全性和性能方面。 1. 可变性 - String类...
在《JAVA优化编程详解》这本书中,作者深入探讨了如何将Java编程技能提升到一个全新的层次,特别是聚焦于性能优化这一关键领域。Java优化不仅仅是关于提高代码运行速度,更是关于资源的有效利用,确保应用程序在复杂...
Java Bug模式详解是一种深入理解和解决Java编程中常见错误和陷阱的方法。这些模式通常源于语言特性、API使用不当或对编程规范的误解。本篇将详细探讨一些常见的Java Bug模式,并提供预防和修复策略。 1. **空指针...
Java中的`String`、`StringBuilder`和`StringBuffer`都是用来处理字符串的类,它们各自有不同的特性和适用场景。在理解它们之间的区别之前,我们首先要知道它们的共同点。 **共同点:** 1. **都是字符串类**:这三...
《Java中的StringBuffer与StringBuilder类详解》 在Java编程中,当我们需要对字符串进行多次修改时,StringBuffer和StringBuilder类成为首选。这两个类提供了一种高效且灵活的方式来处理字符串,与不可变的String类...
- **优化数据结构和算法**:减少不必要的对象创建,使用更节省内存的数据结构,如使用StringBuilder代替String进行字符串拼接。 - **使用序列化和反序列化**:在某些场景下,可以将对象序列化到磁盘或网络,然后...