目录
StringBuilder类概述及其构造方法
StringBuilder类的常用方法
StringBuilder类练习
–我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuilder就可以解决这个问题
–public StringBuilder()
String是如何拼接的?
解释:首先对象 S = "hello",首先会在方法区常量池里边给hello 分配一个地址,这个地址存储的值是hello,在执行s+=“word”时,又new了一个地址叫做world,放在002这个地址内,拼接时又new了一个地址003,把他们加起来放在003这个地址内,
StringBuilder和String的区别?
StringBuilder是一个可变的字符串,字符串缓冲区类。
String的内容是固定的,StringBuilder的内容是可变的。
构造方法:
StringBuilder()
成员方法:
public int capacity():返回当前容量值,理论值
public int length():返回长度,实际值
package com.demo01;public class StringBuilderDemo {public static void main(String[] args) {//创建对象StringBuilder sb = new StringBuilder();System.out.println("sb:"+sb);System.out.println("sb.capacity():"+sb.capacity());System.out.println("sb.length():"+sb.length());sb.append("asdfasdfasdfasdfasdfasdfasdfdfgdragtert");System.out.println("sb.capacity():"+sb.capacity());System.out.println("sb.length():"+sb.length());}
}
上述:因为stringbuilder是可变的,所以不是直接赋值,在原有字符的基础上追加字符,容量会自动扩充容量。
–public StringBuilder append(任意类型)
–public StringBuilder reverse()
package com.demo02;public class StringBuilderDemo {public static void main(String[] args) {//创建对象StringBuilder sb = new StringBuilder();//public StringBuilder append(任意类型)StringBuilder sb2 = sb.append("hello");System.out.println("sb:"+sb);System.out.println("sb2:"+sb2);System.out.println(sb == sb2); //truesb.append("hello");sb.append("world");sb.append(true);sb.append(100);System.out.println("sb:"+sb);//链式编程sb.append("hello").append("world").append(true).append(100);System.out.println("sb:"+sb);//public StringBuilder reverse()sb.reverse();System.out.println("sb:"+sb);}
}
–例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
练习1:StringBuilder和String的相互转换
package com.demo03;public class StringBuilderTest {public static void main(String[] args) {String s = "helloworld";StringBuilder sb = new StringBuilder(s);//StringBuilder sb2 = sb.append("xiaoyu"); System.out.println(sb);//System.out.println(sb2);}
}
练习2:把数组拼接成一个字符串
package com.demo03;public class StringBuilderTest2 {public static void main(String[] args) {//创建一个数组对象int[] arr = {1,2,3};System.out.println(arr.length);//用写方法实现拼接//调用方法String s = arrayToString(arr);//输出结果System.out.println("s:"+s);}/** 两个明确* 返回值类型:String* 参数列表:int [] arr*/public static String arrayToString(int[] arr) {StringBuilder sb = new StringBuilder();//[1, 2, 3]sb.append("[");for(int x=0; x
练习3: 把字符串反转
package com.demo03;import java.util.Scanner;public class StringBuilderTest3 {public static void main(String[] args) {//创建对象Scanner sc = new Scanner(System.in);System.out.println("请输入字符串");// 接收数据字符String s = sc.nextLine();//调用方法String result = myReverse(s);//输出姐夫结果System.out.println("result:"+result);}public static String myReverse(String s) {//String -- StringBuilder -- reverse() -- StringStringBuilder sb = new StringBuilder(s);sb.reverse();// 返回stringString result = sb.toString();return result;}
}
练习4: 判断一个字符串是否是对称字符串
package com.demo03;import java.util.Scanner;public class StringBuilderTest3 {public static void main(String[] args) {//创建对象Scanner sc = new Scanner(System.in);System.out.println("请输入字符串");// 接收数据字符String s = sc.nextLine();//调用方法String result = myReverse(s);if (s.equals(result)) {System.out.println("该字符串是对称字符串");}else {System.out.println("该字符串不是对称字符串");}//输出姐夫结果System.out.println("result:"+result);}public static String myReverse(String s) {//String -- StringBuilder -- reverse() -- StringStringBuilder sb = new StringBuilder(s);sb.reverse();// 返回stringString result = sb.toString();return result;}
}