StringBuilder类
StringBuilder类:
StringBuilder代表可变字符串对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
优点:StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁。
构造器:
构造器 | 说明 |
---|---|
public StringBuilder() | 创建一个空白的可变的字符串对象,不包含任何内容 |
public StringBuilder(String str) | 创建一个指定字符串内容的可变字符串对象 |
常用方法:
方法名称 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据并返回StringBuilder对象本身 |
public StringBuilder reverse() | 将对象的内容反转 |
public int length() | 返回对象内容长度 |
public String toString() | 通过toString()就可以实现把StringBuilder转换为String |
package com.ouyang.demo01;
public class demo {
public static void main(String[] args) {
//使用无参构造器创建对象
StringBuilder sb=new StringBuilder();
//使用有参构造器创建对象
StringBuilder sb2=new StringBuilder("OYO");
//append()方法
sb.append("aaa");
sb.append(111);
sb.append(6.66);
sb.append(true);
sb.append('c');
System.out.println("sb = " + sb);//sb = aaa1116.66truec
//链式编程:append方法返回的也是 StringBuilder类型
sb2.append("aaa").append(111).append(6.66).append(true).append('c');
System.out.println("sb2 = " + sb2);//sb2 = OYOaaa1116.66truec
//reverse()方法:反转StringBuilder中的内容
sb.reverse();
System.out.println("sb = " + sb);//sb = ceurt66.6111aaa
//length()方法:返回 StringBuilder 长度
System.out.println(sb.length());//15
//toString()方法:把 StringBuilder 转换成字符串
String str=sb.toString();
System.out.println("str = " + str);//str = ceurt66.6111aaa
}
}
案例:
案例1:
package com.ouyang.demo01;
public class deno02 {
public static void main(String[] args) {
int[] arr={11,22,33};
String s=getStringBuilder(arr);
System.out.println("s = " + s);
}
public static String getStringBuilder(int[] arr){
StringBuilder sb=new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]);
if(i==arr.length-1){
sb.append("]");
continue;
}
sb.append(",");
}
return sb.toString();
}
}
案例2:
package com.ouyang.demo01;
import java.util.Scanner;
public class demo {
/*
键盘录入一个字符串,判断这个字符串是否为对称字符串
例如:"上海自来水来自海上" , 就是一个对称的字符串
"ABCA",就不是一个对称的字符串
*/
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
StringBuilder sb=new StringBuilder(sc.next());
if(isSymmetry(sb)){
System.out.println(sb+", 就是一个对称的字符串");
}else {
System.out.println(sb+", 就不是一个对称的字符串");
}
}
public static boolean isSymmetry(StringBuilder sb){
String s1=sb.toString();
String s2=sb.reverse().toString();
return s1.equals(s2);
}
}
StringBuffer与StringBuilder:
1.StringBuffer的用法与StringBuilder是一模一样的
2.StringBuilder是线程不安全的StringBuffer是线程安全的。
StringBuilder和String:
字符串相关的操作,如频繁的拼接、修改等,建议用StringBuidler?
String 是不可变字符串、频繁操作字符串会产生很多无用对象,性能差。
StringBuilder:是内容可变的字符串、拼接字符串性能好、代码优雅。