700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > String StringBuilder StringBuffer

String StringBuilder StringBuffer

时间:2023-05-07 12:08:06

相关推荐

String  StringBuilder StringBuffer

一.String类使用字符数组保存字符串,数组有final修饰,不可变.线程安全

String a="hello";String b=new String("hello");

第一种在栈内存定义了一个a对象的引用,指向堆内存的值"hello"的内存地址

第二种先在栈内存创建一个"hello"对象,new String又产生了另外一个对象.第一个对象无人引用

上图的解释:String在Java中使用了共享设计,在Java形成一个对象池,这个对象池可以保存多个对象,如果新实例化的对象已经在对象池中存在,就不在重复定义,直接从对象池中取出使用。

二.StringBuilder类继承AbstractStringBuilder,底层也是字符数组保存字符串,可变.线程不安全

//无参构造,默认长度16的字符数组

public StringBuilder() {

super(16);

}

//带参数的构造函数

public StringBuilder(String str) {

super(str.length() + 16);

append(str);

}

//没有实现同步

public StringBuilder append(String str) {

super.append(str);

return this;

}

三.StringBuffer类继承AbstractStringBuffer,底层也是字符数组保存字符串,可变.线程安全

//无参构造,默认长度16的字符数组

public StringBuffer() {

super(16);

}

//带参数的构造函数

public StringBuffer(String str) {

super(str.length() + 16);

append(str);

}

//和StringBuilder的区别就是同步

public synchronized StringBuffer append(String str) {

super.append(str);

return this;

}

四.总结:

1.如果要操作少量的数据用 = String

2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。