黑马程序员技术交流社区

标题: 字符串一旦被赋值就不能被改变吗不是 [打印本页]

作者: lcycr    时间: 2014-8-11 21:04
标题: 字符串一旦被赋值就不能被改变吗不是
                String ss1 = "hello";
                String ss2 = "world";
                String ss3 = "helloworld";

                System.out.println(ss3 == ss1 + ss2);// false
                System.out.println(ss3 == "hello" + "world"); // true
作者: 黑马_java猿    时间: 2014-8-11 21:15
是的。每声明一次 开辟一片空间
作者: jw在路途    时间: 2014-8-11 21:30
是啊~~~~哈哈
作者: 象牙    时间: 2014-8-11 21:31
String类对象称为不可变字符串,但是字符串引用可以用来指向另一个字符串。第一个输出为false第二个输出为true,是因为在java中有一个常量池存储字符串,当字符串进行比较的时候哦就会去常量池中去查看是否已经存在相应的字符串,并返回他们的地址作为参考,所以第一个为false第二个为true
作者: jw在路途    时间: 2014-8-11 21:32
说好的指导呢
作者: 继续悲伤    时间: 2014-8-11 21:42
这句话有点片面啊,它的引用还是能改变的!楼上正解啊!
作者: paozhuanyinyu    时间: 2014-8-11 21:45
是的,就算是ss3="hello",ss1==ss3也是false,要比较内容用equals
作者: 我为你着迷    时间: 2014-8-11 21:47
字符串一旦被初始化就不会改变  指的是内容不会改变  但是它的引用是可以变的
作者: 姜佳文    时间: 2014-8-11 21:53
。。。String内容可以改变,但是地址值不可改变。。。
作者: jw在路途    时间: 2014-8-12 11:29
我的object帖子还未结贴 - -,发错了,发到提问帖了  帮我回答下~http://bbs.itheima.com/thread-136955-1-1.html
作者: zhouqun    时间: 2014-8-12 21:30
ss1 ss2是变量  肯定false了     是字符串被赋值后值是不可以改变了
作者: justin1258    时间: 2014-8-12 21:32
System.out.println(ss3 == "hello" + "world");
作者: justin1258    时间: 2014-8-12 21:34
System.out.println(ss3 == "hello" + "world");
这一句编译器会优化成:System.out.println(ss3 == "helloworld");,所以返回true
作者: 会飞De石头    时间: 2014-8-13 08:15
对的  字符串是不可改变的  ,,但可以实用StringBuffer 和Stingbuilder来实现
作者: Joemi    时间: 2014-8-13 08:36
有方法是可以改变内容的




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