其他分享
首页 > 其他分享> > String、StringBulider、StringBuffer的区别

String、StringBulider、StringBuffer的区别

作者:互联网

1、相同点:

从某种意义上来讲,它们都属于“字符串类”,它们都有构造方法,都实现方法的重载,都属于final修饰的类,不允许被继承。

2、不同点:

不同的是String 是不可变的,而StringBulider与StringBuffer是可变的。

        String不可变的原因是在JDK提供的的类库里面String类进行存值时使用的是 final char value[],这个常量字符数组,使用不可变,除非重新指向。

未重新指向:

        String str = "落霞与孤鹜齐飞,秋水共长天一色";
		str.replace('一', '二');
		str.replace("落霞", "晚霞");
		System.out.println(str);  //落霞与孤鹜齐飞,秋水共长天一色

重新指向后: 

        String str3 = "abc"; 
		str3 = str3+"###";
		System.out.println(str3);  //abc###

StringBulider与StringBuffer它们也有共同点:都是可变字符串,都是AbstractStringBuilder类的子类,所以拥有很多共同的方法。

        StringBuilder stringBuilder = new StringBuilder();
		stringBuilder.append("");
		

		StringBuffer stringBuffer = new StringBuffer();
		stringBuffer.append("");

 StringBulider与StringBuffer可变的原因是:它们在进行方法的实现时是在原来字符串上进行,而String是重新开辟内存空间。

但有一点不同:

StringBuilder类中的方法没有使用synchronized关键字,所以它的方法都是“线程不安全”,但是性能好。

StringBuffer类中的方法使用synchronized关键字,所以它的方法都是“线程安全”,但是性能差。

标签:String,StringBulider,str3,StringBuffer,str,StringBuilder
来源: https://blog.csdn.net/qq_59616295/article/details/123051826