黑马程序员技术交流社区

标题: 请教一下朋友应聘的【面试题】 String和StringBuffer的区别 [打印本页]

作者: 曹操    时间: 2012-6-3 23:28
标题: 请教一下朋友应聘的【面试题】 String和StringBuffer的区别
先谢谢各位了
作者: 黑马张扬    时间: 2012-6-3 23:44
本帖最后由 黑马张扬 于 2012-6-3 23:50 编辑

String 对一串字符进行操作。不可变类。

StringBuffer 也是对一串字符进行操作,但是是可变类。


String:
是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.然后把引用指向新的对象
String 是final类,即不能被继承.

StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立
StringBuffer sb = new StringBuffer();

不能通过赋值值符号对他进行赋值
需要赋值的时候可以通过它的append方法.
sb.append("java");


作者: 赵志勇    时间: 2012-6-3 23:49
刚回答了一个这样的问题。请楼主在提问题前好好的在百度中搜一下很容易解决,这是程序员的一贯做法。下面回答问题:
没多少区别~~~~String 对值进行改变的时候 无论变成什么 原来的字符串内存都不会用到~ 都会产生一个新的字符串  或者说 String 声明的字符串是不可以改变的
而StringBuffer 缓冲字符串~ 它声明的变量的值是可以改变的~ 可以在某字符串的基础上删除替换其中某一个字符 而不需要生成一个新的字符串~~~一般来说 推荐使用StringBuffer
作者: 黄克帅    时间: 2012-6-3 23:58
String 类的对象 一旦创建就不可改变 对String 对象进行修改时,会开辟一个新的内存放如新的值
String 是final类,即不能被继承.

StringBuffer: 是一个字符串缓冲区,是一个容器。线程同步
特点
1 长度可变
2 可以同时操作多种数据类型
3 可以通过toString返回一个String类型数据。
作者: 黑马11期李项京    时间: 2012-6-4 00:02
论坛里,已经有人问过问题了,可以先在论坛里搜下再提问的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2