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