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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我自信我很牛 中级黑马   /  2013-3-21 22:53  /  1711 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Demo5_StringValue {

        public static void main(String[] args) {
                String strValue = "ABCDEFG";
                strValue.substring(3);
                strValue.concat("123");
                strValue.replace("ABC", "XXX");
                System.out.println(strValue);                       
                String value = new String ("ABCDEFG");
                System.out.println(strValue == value);       

        }

}
//为什么结果是这样的求解释:
//ABCDEFG
//false

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-22 12:36

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

倒序浏览
1. String 是final 类,所以不管什么操作,都产生新的字符串,原来的字符串的值不变,所以打印ABCDEFG
2.String 是Object ,==比较的是地址,两个不同的Object对象地址 不可能一样 所以false

评分

参与人数 1技术分 +1 收起 理由
scott0610 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 侯国奇 于 2013-3-22 00:22 编辑

System.out.println(strValue);      
打印结果是原值,是因为字符串一旦被初始化后就不可以被改变。                  
System.out.println(strValue == value);   
打印结果是false,是因为比较的是两个内存地址值,而不是字符串本身内容。
可以用System.out.println(strValue.equals(value));得出true的结论。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报

  1. public class Demo5_StringValue {

  2.         public static void main(String[] args) {
  3.                 String strValue = "ABCDEFG";     //定义一个字符串
  4.                 strValue.substring(3);                 //这个是返回一个子字符串,从第3个开始直到结尾, 这句没有实际意义,没输出没改变原来    strValue=strValue.substring(3)  这个是生成新的并返回
  5.                 strValue.concat("123");              //<span style="line-height: 1.5;">concat</span><span style="line-height: 1.5;">将123连接到</span>strValue<span style="line-height: 1.5;">的结尾,</span><span style="line-height: 1.5;">这句没有实际意                    义</span><span style="line-height: 1.5;">strValue=</span><span style="line-height: 1.5;">strValue.concat("123")    这样才能添加并返回</span>
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
字符串是一个特殊的对象,一旦被初始化就不可以改变。所以打印ABCDEFG
strValue是一个对象
value是2个对象
“==”比较两个变量本身的值,即两个对象在内存中的地址。
“equals()”比较字符串中所包含的内容是否相同。
LZ用==比较返回false,用equal()比较则返回true

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马