ITPub博客

首页 > Linux操作系统 > Linux操作系统 > java中String和StringBuffer有何不同

java中String和StringBuffer有何不同

原创 Linux操作系统 作者:zlich 时间:2008-06-29 16:54:51 0 删除 编辑
String是一种强不变类型,它的值一旦被赋予之后,在内存中的相应位置上的值就不会变化了.即便你用String的方法:concat(String str)和replace(char oldChar, char newChar)等等,所返回的值都是新创建的一个String类型,而不是在原内存地址上去更改,因此比如这样的一个赋值:
String s="Hello Baidu";
s=new String("Hello Baidu");

这样在内存中其实是开辟了两个内存空间来存放Hello Baidu,前面那个对象依然留在内存当中,而:
s=s.concat("!");
加上这样一句,s的值变为了Hello Baidu!,在内存中实际上是新创建了一个String对象装Hello Baidu!,而原有的Hello Baidu依然存在

StringBuffer就不同了,它是种可变类型,它的值被赋予之后,在运行期同样可以通过它的方法,如append(String str) 操作内存上的值,而不仅仅是它的引用而已,也就是说同样的对s的值进行修改
StringBuffer s="Hello Baidu";
s.append("!");
这样的操作其实只创建了一个StringBuffer的对象,大大节约了内存的开销

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11704089/viewspace-366331/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 苏州面试印象录
请登录后发表评论 登录
全部评论

注册时间:2008-06-29

  • 博文量
    23
  • 访问量
    22684