继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

String,stringBuffer,StringBuilder区别和详细例子

慕田峪4524236
关注TA
已关注
手记 204
粉丝 19
获赞 50

0,String定义初始化为null,会有什么影响?
1,为什么有了String类型,还需要StringBuffer和StringBuilder?
2,String和StringBuffer和StringBuilder区别?

问题0)为什么有了String类型,还需要StringBuffer和StringBuilder?,
因为String类型是不可变类型,字符串操作(拼接)造成会创建很多中间的对象。

问题1)string初始赋值为null,会有什么影响?

例子1:
public class StringNUll {
public static void main(String[] args) {
String str001 = null;
System.out.println(“str001===:”+str001);
    String str002 = "null";
    str002 = str002 + "321";
    System.out.println("str002===:"+str002);
}
}

str001===:null
str002===:null321
反编译:String拼接会优化为StringBuilder
53: new #3 // class java/lang/StringBuilder
56: dup
57: invokespecial #4 // Method java/lang/StringBuilder.""?)V
60: ldc #11 // String str002===:
62: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
65: aload_2
66: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
69: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;

问题2)Java的字符串,String、StringBufer、StringBuilder有什么区别?
String是Java语言非常基础和重要的类,它是immutable类,它被声明为final class,所有属性也是final的。Immutable类表现出来的性质就是不可以通过它的实例修改属性值。所以字符串的拼接,裁剪等动作,都会产生新的String对象。

StringBuffer是为了解决String拼接产生太多的中间对象而提出的一个类,我们可以用append和add方法,把字符串添加到已有的序列的末尾或指定位置,StringBuffer是一个线程安全的类,它保证了线程安全,随之而来的是额外的开销,所以除非有线程安全的需要,不然推荐使用stringbuilder效率更高。

Stringbuilder的功能和Stringbuffer是一样的,它去掉了synchronize关键字修饰,减小了开销。绝大部分情况下进行字符串操作的首选。
————————————————

原文链接:https://blog.csdn.net/newVenues/article/details/101703262
作者:一起写程序 jkCode

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP