JAVA基础 —— StringBuilder和StringJoiner

文章详细介绍了Java中用于高效字符串操作的StringBuilder类,包括其构造方法、常用方法和实例应用,如字符串拼接和反转。另外,还引入了JDK8新增的StringJoiner,强调其作为可变字符串容器的特性,以及简洁的拼接功能。最后,文章通过示例代码展示了如何使用这两个类进行字符串操作,并总结了它们在字符串处理中的作用和优势。
摘要由CSDN通过智能技术生成

目录

一、StringBuilder

1. StringBuilder概述

 2. StringBuilder 构造方法

 3. StringBuilder 常用方法

4. StringBuilder 练习

4.1  对称字符串

4.2 拼接字符串 

二、 StringJoiner

 1. StringJoiner 概述

2.  StringJoiner 构造方法

3. StringJoiner 成员方法

三、总结


一、StringBuilder

1. StringBuilder概述

可以看出一般方法效率很低,如果采用StringBuilder对象方法效率会高。


所以StringBuilder对象到底是什么呢?

线程不安全的类,能够被多次的修改并且不产生新的未使用对象。

StringBuilder可以看成是一个容器,创建之后里面的内容是可变的

  • 作用:提高字符串的操作效率。

StringBuilder原理图 见 JAVA基础 —— 字符串相关底层原理

一般方法

每次拼接结果最终产生很多无用字符串。

StringBuilder

将所有的信息都存入一个StringBuilder对象,不会产生无用字符串。

 2. StringBuilder 构造方法

方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容。
public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象。

 举例:

无参构造
StringBuilder sb = new StringBuilder();
有参构造
StringBuilder sb = new StringBuilder("abc");

 3. StringBuilder 常用方法

方法名说明
public StringBuilder append (任意类型)添加数据,并返回对象本身
public StringBuilder reverse()反转容器中的内容
public int length()返回长度(字符出现的个数)
public String toString()通过toString()就可以实现把StringBuilder转换为String

 练习:

public static void main(String[] args) {
		// 1.创建StringBuilder对象
		StringBuilder sb = new StringBuilder();
		// 学习过面向对象,打印发现不是地址值
		// 因为StringBuilder是java写好的类
		// java在底层对它进行特殊处理 打印出来的其实是属性值
		System.out.println(sb);

		// 2.添加元素
		sb.append(1);
		sb.append(2.3);
		sb.append(true);
		System.out.println(sb);

		// 2. 反转
		sb.reverse();
		System.out.println(sb);

		// 3.获取长度
		int len = sb.length();
		System.out.println(len);

		// 此时sb是一个存入数据的容器
		// 要把StringBuilder变回字符串
		String str = sb.toString();
		// 转换成字符串后就可以使用字符串方法
		System.out.println(str);
	}

运行结果:

4. StringBuilder 练习

4.1  对称字符串

需求:键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是。

  •         对称字符串:123321、111
  •         非对称字符串:123123
// Stingbuilder的应用场景
	// 1.字符串的拼接
	// 2.字符串的比较
	public static void main(String[] args) {
		// 1.键盘录入
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String str = sc.next();

		// 2.反转字符串
		// 链式编程
		String result = 
				new StringBuilder().append(str).reverse().toString();

		// 3.比较
		if (str.equals(result)) {
			System.out.println("当前字符串是对称字符串");
		} else {
			System.out.println("当前字符串不是对称字符串");
		}
	}

4.2 拼接字符串 

需求:定义一个方法,把 int数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法,并在控制台输出结果。
例如:数组为int[]arr = {1,2,3};    执行方法后的输出结果为:[1,2,3]

public static void main(String[] args) {
	//1.定义数组
		int[ ] arr  = {1,2,3};
		
		//2.调用方法把数组变成字符串
		String str = arrToString(arr);
		System.out.println(str);
	}
	private static String arrToString(int[] arr) {
		StringBuilder sb = new StringBuilder();
		sb.append("[");
		
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length -1) {
				sb.append(arr[i]);
			}else {
				sb.append(arr[i]).append(",");
			}
			
		}
		sb.append("]");
		return sb.toString();
	}

二、 StringJoiner

让我们来稍微体验一下StringJoiner:

 1. StringJoiner 概述

  • StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
  • 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
  • JDK8出现的

2.  StringJoiner 构造方法

方法名说明
public StringJoiner (间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner (间隔符号,开始符号,结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号

3. StringJoiner 成员方法

方法名说明
public StringJoiner add (添加的内容)添加数据,并返回对象本身
public int length0返回长度(字符出现的个数)
public String toString0返回一个字符串(该字符串就是拼接之后的结果)

 练习:

public static void main(String[] args) {
		// 1.创建一个对象 并指定中间的建个字符
		StringJoiner sj = new StringJoiner("---");

		// 2. 添加数据
		sj.add("aaa").add("bbb").add("ccc");
		System.out.println(sj); // aaa---bbb---ccc

		// 3.创建另一个对象
		StringJoiner sj2 = new StringJoiner(",", "[", "]");

		// 4. 添加对象
		sj2.add("aaa").add("bbb").add("ccc");
		System.out.println(sj2); // [aaa,bbb,ccc]

		// 5.打印长度
		int len = sj2.length();
		System.out.println(len); // 15

		// 6.转换字符串
		String str = sj2.toString();
		System.out.println(str); // [aaa,bbb,ccc]

	}

三、总结

1. String
表示字符串的类,定义了很多操作字符串的方法。

2. StringBuilder
一个可变的操作字符串的容器。
可以高效的拼接字符串,还可以将容器里面的内容反转。

3. StringJoiner
JDK8出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hgngy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值