javaSE (十一)StringBuffer类的append、insert、SB与String互相转换、数组SB相互转换、两个SB和String之间的区别、String和SB分别作为参数传递

本文介绍了Java中的StringBuffer类,包括append和insert方法的使用,详细阐述了StringBuffer与String之间的转换方式,如构造方法、append()与toString()的应用。此外,还对比了StringBuffer、StringBuilder与String的区别,强调了线程安全和效率问题。最后,讨论了String和StringBuffer作为参数传递时的行为差异,指出String是不可变的,而StringBuffer可以通过值传递进行修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、StringBuffer类的append、insert:

append:StringBuffer是字符串缓冲区,new的时候在堆里创建了一个对象,底层是一个长度为16的字符数组,当使用append方法时,不会再创建新的对象,不断向原缓冲区添加字符
insert:直接在第几个指引出插入相应的数据,往后挤一挤~

ppackage cn.njupt;

public class ArrayReverse {

	public static void main(String[] args) {
		StringBuffer sb1 = new StringBuffer();
		StringBuffer sb2 = sb1.append(true);
		StringBuffer sb3 = sb1.append("dasd");
		StringBuffer sb4 = sb1.append('e');
		StringBuffer sb5 = sb1.append(100);
		StringBuffer sb6 = sb1.insert(3,"插入");
		
		System.out.println(sb2);
		System.out.println(sb3);
		System.out.println(sb4);
		System.out.println(sb5);
		System.out.println(sb6);
	}
}

输出:	tru插入edasde100
		tru插入edasde100
		tru插入edasde100
		tru插入edasde100
		tru插入edasde100

2、StringBuffer与String互相转换:

  1. String --> StringBuffer
    a) 构造方法
    b) append() 方法

  2. StringBuffer --> String
    a) 构造方法
    b) toString() 方法
    c) subString(0,lenth)

3、数组SB相互转换:
sb1 = sb1.append(arr[i] + “]”);
sb1 = sb1.append(arr[i]).append("]");
最好用下面这个,因为String和别的数据相加,会创建一个StringBuffer和toString方法,垃圾比较多

package cn.njupt;

public class ArrayReverse {

	public static void main(String[] args) {
		int[] arr = { 1, 2, 3 };
		array2String(arr);

	}

	public static void array2String(int[] arr) {
		StringBuffer sb1 = new StringBuffer("[");
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				//sb1 = sb1.append(arr[i] + "]");
				sb1 = sb1.append(arr[i]).append("]");
			} else {
				//sb1 = sb1.append(arr[i] + ",");
				sb1 = sb1.append(arr[i]).append(",");
			}

		}

		System.out.println(sb1);
	}
}

4、两个SB和String之间的区别:
StringBuffer:线程安全,效率低
StringBuilder:线程不安全,效率高,用的比较多
String:不可变的字符序列,而以上两个SB是可变的字符序列

5、String和SB分别作为参数传递:

String虽然是引用类型,但是和基本数据类型一样,是不能通过值传递改变的(因为String创建后就不能改变了),改变的其实是新创建的引用,也就是说,原来的没有动,是新创建的
而SB可以通过值传递,毕竟对象创建在堆里;

package cn.njupt;

public class ArrayReverse {

	public static void main(String[] args) {
		
		String str1 = "haha";

		change1(str1);
		System.out.println(str1);
		
		StringBuffer sb = new StringBuffer();
		sb.append("haha");
		change2(sb);
		System.out.println(sb);

	}

	public static StringBuffer change2(StringBuffer sb) {
		return sb.append("pingan");
		
	}

	public static String change1(String str1) {
		return str1 + "pingan";

	}
}

输出:	haha
		hahapingan

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值