String、StringBuffer、StringBuider的区别

String、StringBuffer、StringBuider的区别
String是不可变的,如果修改了会生成一个新的字符串对象,StringBuffer和StringBuider是可以变的。
StringBuffer是线程安全的,但是效率比较低,StringBuider线程不安全,但是效率高,可以根据不同的应用场景进行选择。

Sring类中的创建方式
1、直接创建 String str = “abc”;
2、public String(),创建一个空白的字符串,不含有任何的内容
String str = new String();//这是一个空的字符串,无内容
3、public String(char[] array),根据字符数组的内容,来创建对应的字符串
char[] charArray = {‘A’,‘B’,‘C’};
String str = new String(charArray);
//ABC
4、public String(byte[] array) ,根据字节数组的内容,来创建对应的字符串
byte[] byteArray = { 97 , 98 , 99 };
String str = new String(byteArray);
//abc

StringBuffer

StringBuffer类的常用方法
public StringBuffer append(String str)
将字符串str追加到StringBuffer的缓存中。
public String toString()
返回一个字符串,将缓存中的字符串内容返回到一个字符串对象中。
public StringBuffer insert(int offset, String str)
在指定位置插入字符串。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer stringBuffer = new StringBuffer("abc");

		stringBuffer.append("def").append("ghi");
		stringBuffer.append("ddd").append("slsfh");

		stringBuffer.insert(3, "0000");
		System.out.println(stringBuffer);
	}

StringBuilder:
StringBuilder和StringBuffer相似,两个类的构造器和方法基本相同。不同的是,StringBuffer是线程安全的,StringBuiler则没有实现线程安全功能,但是性能略高。因此,在通常情况下,如果需要创建一个内容可变的字符串 对象,应该优先考虑使用StringBuilder类。

public class Test {

	public static void main(String[] args) {

		StringBuffer sb = new StringBuffer();
		//追加字符串,append方法
		sb.append("java");//此时sb="java"
		System.out.println("追加后:"+sb);
		//插入操作
		sb.insert(0, "hello ");//在索引是0的位置插入hello,此时 sb = "hello java"
		System.out.println("插入后:"+sb);
		//删除操作
		sb.delete(5, 6);  //此时sb="hellojava"
		System.out.println("删除后:"+sb);
		//反转
		sb.reverse(); //sb="avajolleh"
		System.out.println("反转后:"+sb);
		//length()表示字符串长度
		System.out.println(sb.length());//输出9
		//capacity()表示容量,一般比length()大
		System.out.println(sb.capacity());//输出16
		//setLength():设置长度
		sb.setLength(5);
		System.out.println(sb);
	}
	
}

希望大家作为参考!

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 之间有什么区别String 是一个不可变的字符串,一旦创建就不能修改。StringBufferStringBuilder 都是可变的字符串,因为它们的内部实现使用了可变长度的数组来存储字符串,可以通过 append() 方法实现字符串的修改。StringBuffer 是线程安全的,而 StringBuilder 则不是。如果在单线程环境下,建议使用 StringBuilder,因为它的效率更高。 ### 回答2: StringStringBufferStringBuilder都是Java中用来处理字符串的类。 String是不可变的字符串类,一旦创建就不可修改。每次对String对象进行修改时,实际上是创建了一个新的String对象。这会导致频繁的对象创建和销毁,影响性能。因此,在频繁修改字符串的场景下,使用String可能不是最佳选择。 StringBufferStringBuilder都是可变的字符串类。它们可以对字符串进行增删改操作,而不会创建新的对象。两者的区别在于StringBuffer是线程安全的,而StringBuilder是非线程安全的。因为StringBuffer的方法都是同步的,所以在多线程的环境下使用StringBuffer可以保证数据的一致性,但性能相对较低。StringBuilder没有同步方法,所以在单线程环境下使用StringBuilder可以获得更好的性能表现。 总结来说,如果程序中有多个线程同时操作字符串,应该使用StringBuffer来保证线程安全。如果程序是单线程环境,就可以使用StringBuilder来获得更好的性能。而对于不需要频繁修改的字符串,使用String即可。这三个类各有特点,在不同场景下选择适合的类能够提升程序的性能和效率。 ### 回答3: StringStringBufferStringBuilderJava中用来处理字符串的类。 String是一个不可变的类,也就是说它的值在创建后是不可更改的。每次对String的操作都会创建一个新的String对象,这样会产生大量的临时对象,影响性能。如果需要频繁对字符串进行操作,建议使用StringBufferStringBuilderStringBuffer是一个线程安全的可变类,适用于多线程环境下的字符串操作。它的方法在内部使用了synchronized关键字来保证线程安全,但在性能方面会有一些损失。 StringBuilder是一个线程不安全的可变类,适用于单线程环境下的字符串操作。它的方法没有使用synchronized关键字,因此在性能方面比StringBuffer更高效。 在实际应用中,如果需要频繁对字符串进行操作并且需要线程安全,可以使用StringBuffer;如果在单线程环境下操作字符串,可以使用StringBuilder来提高性能。 总之,String类适合处理不需要改变的字符串,StringBuffer适合处理多线程情况下的可变字符串,而StringBuilder适合在单线程情况下的可变字符串处理。根据具体的需求选择适合的类可以提高程序的性能和效率。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

划水的阿瞒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值