黑马程序员技术交流社区
标题:
关于字符串
[打印本页]
作者:
gzbbxu
时间:
2013-6-29 16:42
标题:
关于字符串
本帖最后由 孙百鑫 于 2013-7-1 07:52 编辑
1,String str="a"+"b"+"c";
2, String str=new String("abc");
3,String str="abc";
关于3,是没得说,创建的肯定是一个对象。
对于1,2,我是不太理解。String类不是具有连接的功能么?应该是同一个对象才对啊?
作者:
王广亚
时间:
2013-6-29 16:50
对String str="a"+"b"+"c";有运算符的优先级而言应先算="a"+"b"+"c";
“+”是连接符,然后再赋给str.
作者:
王广亚
时间:
2013-6-29 16:50
对String str="a"+"b"+"c";有运算符的优先级而言应先算="a"+"b"+"c";
“+”是连接符,然后再赋给str.
作者:
薛淑凯
时间:
2013-6-29 16:57
String str="a"+"b"+"c";
虚拟机自动创建了一个StringBuilder,然后分别对后边的三个字符串调用append方法,最后toString赋值给str
第二个在论坛里找找吧
作者:
L.I.F.E
时间:
2013-6-29 18:01
string类是final的,它的对象是不可变的!对于第一个 应该是 对象 a 对象 a+ b 对象 a+ b 对象 a + b + c;
对于第二个,如果本来有“abc”,对象那就是只有一个new出来的对象,如果本来没有,那就是2个对象。
作者:
L.I.F.E
时间:
2013-6-29 18:15
L.I.F.E 发表于 2013-6-29 18:01
string类是final的,它的对象是不可变的!对于第一个 应该是 对象 a 对象 a+ b 对象 a+ b 对象 a + b + c ...
第一个是3个!多写了一遍a+b。
就是说:引用变量str的指向不断改变。
作者:
张承富
时间:
2013-6-29 21:22
虽然说对java底层不是太深入理解,但是我想我们按照我们自己的理解方式就可以了
说不如做
String s = "a"+"b"+"c";
//问题1,只创建了一个对象
System.out.println(s == ("a"+"b"+"c"));
String s2 = "abc";
//问题3,只创建了一个对象
System.out.println(s2 == "abc");
String s3 = new String("abc");
//问题2,创建了2个对象
System.out.println(s3 == "abc");
复制代码
、
以上代码 打印出结果
作者:
孙百鑫
时间:
2013-7-1 07:52
帖子解决。请及时联系版主改成已解决。不然会漏分的哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2