创建StringBuilder的对象,分别使用无参构造和有参构造
StringBuilder的四种构造方法:
1.StringBuilder():
构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符
2.StringBuilder(CharSequence seq):
构造一个字符串生成器,它包含与指定的 CharSequence 相同的字符
3.StringBuilder(int capacity):
构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定
4.StringBuilder(String str):
构造一个字符串生成器,并初始化为指定的字符串内容
*要注意,一般而言,打印对象,一般输出的是地址值,但是这里我们打印stringBuilder输出的是字符串缓冲区中的内容
package com.tan.stringbuilder;
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
System.out.println("stringBuilder.capacity() = " + stringBuilder.capacity());//stringBuilder.capacity() = 16
System.out.println("stringBuilder = " + stringBuilder);//stringBuilder =
System.out.println("====================");
StringBuilder stringBuilder1 = new StringBuilder();
System.out.println("stringBuilder1.capacity() = " + stringBuilder1.capacity());//stringBuilder1.capacity() =
System.out.println("stringBuilder1 = " + stringBuilder1);//stringBuilder1 =
System.out.println("====================");
StringBuilder stringBuilder2 = new StringBuilder(10);
System.out.println("stringBuilder2.capacity() = " + stringBuilder2.capacity());//stringBuilder2.capacity() = 10
System.out.println("stringBuilder2 = " + stringBuilder2);//stringBuilder2 =
System.out.println("====================");
StringBuilder stringBuilder3 = new StringBuilder("10");
System.out.println("stringBuilder3.capacity() = " + stringBuilder3.capacity());//stringBuilder3.capacity() = 18
System.out.println("stringBuilder3 = " + stringBuilder3);//stringBuilder3 = 10
}
}
二、StringBuilder常用的方法
StringBuilder append(): 1.形参可以传任何类型,因为在API中明确写了有StringBuilder append(Object obj)这一个方法, 而Object是超类,所以这里的形参是可以传任何类型的 2.StringBuilder append(A)实现的是拼接,将A接到原来StringBuilder对象的内容的后面 3.StringBuilder这里和String不一样,String只要有了变动,都是新建了个String对象,而StringBuilder 的append方法使用是直接在原StringBuilder对象上操作的 4.StringBuilder的append方法比String使用加法进行拼接节省很多空间
char charAt(int index) : 获取指定索引位置的字符
int length() VS int capacity() 1.length()返回的是当前已经装了几个字符 2.capacity()返回的是本StringBuilder能装几个字符
int indexOf(String str) VS int lastIndexOf(String str) 1.indexOf(String str):返回传入的字符串在StringBuilder对象中第一次出现的索引位置 2.lastIndexOf(String str):返回传入的字符串在StringBuilder对象中最后一次出现的索引位置
StringBuilder reverse() 1.将StringBuilder对象存储的内容进行反转 3.StringBuilder这里和String不一样,String只要有了变动,都是新建了个String对象,而StringBuilder 的reverse方法使用是直接在原StringBuilder对象上操作的
String substring(int start) VS String substring(int start, int end) 1.String substring(int start)从start开始截取,直到最后一个元素--->[start,last element] 2.String substring(int start, int end)从start开始截取,直到end--->[start,end)
String toString():将StringBuilder对象转换成字符串对象
代码实现:
package com.tan.stringbuilder;
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder("Hello");
System.out.println("stringBuilder = " + stringBuilder);//stringBuilder = Hello
stringBuilder.append("World");
System.out.println("stringBuilder = " + stringBuilder);//stringBuilder = HelloWorld
System.out.println("=================");
System.out.println("stringBuilder.charAt(2) = " + stringBuilder.charAt(2));//stringBuilder.charAt(2) = l
System.out.println("=================");
System.out.println("stringBuilder.length() = " + stringBuilder.length());//stringBuilder.length() = 10
System.out.println("stringBuilder.capacity() = " + stringBuilder.capacity());//stringBuilder.capacity() = 21
System.out.println("=================");
System.out.println("stringBuilder.indexOf("l") = " + stringBuilder.indexOf("l"));//stringBuilder.indexOf("l") = 2
System.out.println("stringBuilder.lastIndexOf("l") = " + stringBuilder.lastIndexOf("l"));//stringBuilder.lastIndexOf("l") = 8
System.out.println("=================");
System.out.println("stringBuilder = " + stringBuilder);//stringBuilder = HelloWorld
System.out.println("stringBuilder.reverse() = " + stringBuilder.reverse());//stringBuilder.reverse() = dlroWolleH
System.out.println("=================");
System.out.println("stringBuilder.reverse() = " + stringBuilder.reverse());//stringBuilder = HelloWorld
System.out.println("stringBuilder.substring(5) = " + stringBuilder.substring(5));//stringBuilder.substring(5) = World
System.out.println("stringBuilder.substring(2,5) = " + stringBuilder.substring(2, 5));//stringBuilder.substring(2,5) = llo
System.out.println("=================");
System.out.println("stringBuilder.toString() = " + stringBuilder.toString());//stringBuilder.toString() = HelloWorld
System.out.println("=================");
}
}
三、StringBuilder的练习
问题描述: 按照指定格式打印字符串,格式样例:[a1,a2,a3]
代码实现:
package com.tan.stringbuilder;
import java.util.Arrays;
public class StringBuilderDemo {
public static void main(String[] args) {
int[] arr = {1,3,5,7,9};
// 基于面向对象思想的一种方法:Arrays.toString(arr)
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
// 基于面向过程思想的三种方法:1.手动实现 2.String的加法拼接 3.StringBuilder的append()
// 1.手动实现
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1){
System.out.println(arr[i] + "]");
}else{
System.out.print(arr[i] + ", ");
}
}
// 2.String的加法拼接
String strPrint = "[";
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1){
strPrint += (arr[i] + "]");
}else {
strPrint += (arr[i] + ", ");
}
}
System.out.println("strPrint = " + strPrint);
// 3.StringBuilder的append()
StringBuilder stringBuilder = new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1){
stringBuilder.append(arr[i] + "]");
}else {
stringBuilder.append(arr[i] + ", ");
}
}
System.out.println("stringBuilder = " + stringBuilder);
}
}



