A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lcycr 中级黑马   /  2014-8-11 21:04  /  3419 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                String ss1 = "hello";
                String ss2 = "world";
                String ss3 = "helloworld";

                System.out.println(ss3 == ss1 + ss2);// false
                System.out.println(ss3 == "hello" + "world"); // true

14 个回复

倒序浏览
是的。每声明一次 开辟一片空间
回复 使用道具 举报
是啊~~~~哈哈
回复 使用道具 举报
String类对象称为不可变字符串,但是字符串引用可以用来指向另一个字符串。第一个输出为false第二个输出为true,是因为在java中有一个常量池存储字符串,当字符串进行比较的时候哦就会去常量池中去查看是否已经存在相应的字符串,并返回他们的地址作为参考,所以第一个为false第二个为true
回复 使用道具 举报
说好的指导呢
回复 使用道具 举报
这句话有点片面啊,它的引用还是能改变的!楼上正解啊!
回复 使用道具 举报
是的,就算是ss3="hello",ss1==ss3也是false,要比较内容用equals
回复 使用道具 举报
字符串一旦被初始化就不会改变  指的是内容不会改变  但是它的引用是可以变的
回复 使用道具 举报
。。。String内容可以改变,但是地址值不可改变。。。
回复 使用道具 举报
我的object帖子还未结贴 - -,发错了,发到提问帖了  帮我回答下~http://bbs.itheima.com/thread-136955-1-1.html
回复 使用道具 举报
ss1 ss2是变量  肯定false了     是字符串被赋值后值是不可以改变了
回复 使用道具 举报
System.out.println(ss3 == "hello" + "world");
回复 使用道具 举报
System.out.println(ss3 == "hello" + "world");
这一句编译器会优化成:System.out.println(ss3 == "helloworld");,所以返回true
回复 使用道具 举报
对的  字符串是不可改变的  ,,但可以实用StringBuffer 和Stingbuilder来实现
回复 使用道具 举报
Joemi 中级黑马 2014-8-13 08:36:28
15#
有方法是可以改变内容的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马