黑马程序员技术交流社区
标题:
[已解决]关于String几种加法的区别?我想好多人还是不懂最底
[打印本页]
作者:
杨海波
时间:
2012-6-7 20:28
标题:
[已解决]关于String几种加法的区别?我想好多人还是不懂最底
本帖最后由 杨海波 于 2012-6-9 10:10 编辑
String stu= "x+"y"
String stu=null;
stu+="x";
stu+="y";
String stu = null;
StringBuffer buf = new StringBuffer();
buf.append("x");
buf.append("y");
stu = buf.toString();
作者:
王月
时间:
2012-6-7 20:52
本帖最后由 王月 于 2012-6-7 20:54 编辑
lz写的有点乱啊,这是都在一个方法中吗,如果在一个方法里不能定义相同的局部变量啊。
你是想知道
String和StringBeffer
的区别吗,论坛有很多的,我就不写了。去看看这些吧
String.PNG
(13.87 KB, 下载次数: 61)
下载附件
2012-6-7 20:52 上传
作者:
李文富
时间:
2012-6-7 21:01
① String tmp = "a" + "b" + "c";
String对象是final修饰的,所有不能被继承,任何字符串常量被赋值后都不能再修改,所以字符串常量是可以被共享的;创建String
对象实例tmp,将三个字符串常量拼接赋值给tmp;
② String tmp = null;
tmp+= "a";
tmp+= "b";
tmp+= "c";
//使用null为参数构造方法创建String对象tmp;
依次将tmp和三个字符串常量进行拼接;
③ String tmp = null;
StringBuffer buf = new StringBuffer();
//StringBuffer顾名思义就是字符串缓冲区,开始时都有一定的容量;超过则自动分配;字符串串联是通过StringBuffer (或 StringBuilder)类及其 append 方法实现的;
buf.append("a");
buf.append("b");
buf.append("c");
tmp = buf.toString();
//字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。
作者:
吴超
时间:
2012-6-7 21:11
本帖最后由 吴超 于 2012-6-7 21:15 编辑
1.String tmp = "a" + "b" + "c"; 这步在编译的时候就已经完成累加,你可以看成是String tmp=“abc”;
2.String s = null,会被转为字符串null
3.
String tmp = null;
StringBuffer buf = new StringBuffer();
buf.append("a");
buf.append("b");
buf.append("c");
tmp = buf.toString();
结果是“abc”
你要知道String 定义的字符串,是不可改变的,而StringBuffer是可被修改的
作者:
郑传庆
时间:
2012-6-7 21:22
我是这样理解的:当改变一个String类型对象的值时,都会导致一个新的String类型对象的生成。第1方法是在Java编译器编译的时候隐性实例化了StringBuffer 对象,把“a”“b”“c”添加到StringBuffer 里面然后返回一个字符串:String tmp=(new StringBuffer().append("a").append("b").append("c")).toString();第2种方法跟第1种差不多一样,只是他是先声明一个String tmp ,然后tmp+= "a"; Java编译器编译的时候也是隐性实例化了StringBuffer 对象,然后把"a"添加到 StringBuffer里面返回一个toString(),下面的加“b”“c” 跟加“a ”一样的。 第3中方法其实是把第1中方法细分了而已。
不知道我的看法大家是否认同,如理解有误,还请指点一下。
作者:
伊文龙
时间:
2012-6-7 21:49
区别很简单:
String的对象不可变
StringBuffer的对象是可变的。
你做的下面这些操作,创建了新的String对象,并将temp的指向指向了新对象
tmp+= "a";
tmp+= "b";
tmp+= "c";
你的下面的这些操作,一直是对一个对象操作,并没有创建新的对象
buf.append("a");
buf.append("b");
buf.append("c");
tmp = buf.toString();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2