1.1StringBuilder类概述
StringBuilder:是一个可变的字符串。字符串缓冲区类。
- String和StringBuilder的区别:
- String的内容是固定的
- StringBuilder的内容是可变的
1.1.1 += 拼接字符串耗费内存原因:
每次拼接都会产生新的字符串对象,而利用StringBuilder来拼接字符串自始至终用的都是同一个StringBuilder容器。
![](https://img.haomeiwen.com/i7034348/45430acebe985062.png)
1.2 StringBuilder类的常用方法
- 构造方法:
- public StringBuilder()
- public StringBuilder(String str)
- 成员方法:
- public String toString():返回此序列中数据的字符串表示形式。
- public StringBuilder append(任意类型):添加数据,并返回对象本身。
- public StringBuilder reverse():字符串本身进行反转。
1.2.1案例代码
package com.itheima_01;
/*
* StringBuilder:是一个可变的字符串类。
*
* String和StringBuilder的区别:
* String的内容是固定的。
* StringBuilder的内容是可变的。
*
* 构造方法
* public StringBuilder()
* public StringBuilder(String str)
*
* public String toString():返回此序列中数据的字符串表示形式。
*/
public class StringBuilderDemo {
public static void main(String[] args) {
//public StringBuilder()
StringBuilder sb = new StringBuilder();
System.out.println("sb:"+sb);
System.out.println(sb.length());
System.out.println("----------------");
//public StringBuilder(String str)
StringBuilder sb2 = new StringBuilder("helloworld");
System.out.println("sb2:"+sb2);
System.out.println(sb2.length());
}
}
1.2.2 案例代码
package com.itheima_02;
/*
* 添加功能
* public StringBuilder append(任意类型):添加数据,并返回对象本身。
* 反转功能
* public StringBuilder reverse()
*/
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);//true
*/
/*
sb.append("hello");
sb.append("world");
sb.append(true);
sb.append(100);
*/
//链式编程
sb.append("hello").append("world").append(true).append(100);
System.out.println("sb:"+sb);
//public StringBuilder reverse()
sb.reverse();
System.out.println("sb:"+sb);
}
}
1.3 StringBuilder案例
1.3.1案例一
package com.itheima_03;
/*
* StringBuilder和String的相互转换
*
* StringBuilder -- String
* public String toString():通过toString()就可以实现把StringBuilder转换为String
*
* String -- StringBuilder
* public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder
*/
public class StringBuilderTest {
public static void main(String[] args) {
/*
//StringBuilder -- String
StringBuilder sb = new StringBuilder();
sb.append("hello");
//错误的
//String s = sb;
//public String toString()
String s = sb.toString();
System.out.println(s);
*/
//String -- StringBuilder
String s = "hello";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}
1.3.2 案例二
利用StringBuilder把数组拼接成一个字符串
- 举例:
- int[] arr = {1,2,3};
- 结果:
- [1, 2, 3]
package com.itheima_03;
/*
* 把数组拼接成一个字符串
* 举例:int[] arr = {1,2,3};
* 输出结果:[1, 2, 3]
*
* 分析:
* A:定义一个int类型的数组
* B:写方法实现把数组中的元素按照指定的格式拼接成一个字符串
* C:调用方法
* D:输出结果
*
*/
public class StringBuilderTest2 {
public static void main(String[] args) {
//定义一个int类型的数组
int[] arr = {1,2,3};
//写方法实现把数组中的元素按照指定的格式拼接成一个字符串
//调用方法
String result = arrayToString(arr);
//输出结果
System.out.println("result:"+result);
}
/*
* 两个明确:
* 返回值类型:String
* 参数列表:int[] arr
*/
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
//[1, 2, 3]
sb.append("[");
for(int x=0; x<arr.length; x++) {
if(x==arr.length-1) {
sb.append(arr[x]);
}else {
sb.append(arr[x]).append(", ");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
1.3.3 案例三
利用StringBuilder完成字符串反转
- 举例:
- 键盘录入”abc”
- 输出结果:”cba”
package com.itheima_03;
import java.util.Scanner;
/*
* 把字符串反转
* 举例:键盘录入”abc”
* 输出结果:”cba”
*
* 分析:
* A:键盘录入一个字符串数据
* B:写方法实现字符串数据的反转
* String -- StringBuilder -- reverse() -- String
* C:调用方法
* D:输出结果
*/
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);
}
/*
* 两个明确:
* 返回值类型:String
* 参数列表:String s
*/
public static String myReverse(String s) {
//String -- StringBuilder -- reverse() -- String
/*
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String ss = sb.toString();
return ss;
*/
return new StringBuilder(s).reverse().toString();
}
}
网友评论