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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹冬明 中级黑马   /  2014-4-15 02:00  /  877 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹冬明 于 2014-4-15 08:26 编辑
  1. class StringDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String x = "hello";
  6.                 String y = "world";
  7.                 String z = "helloworld";

  8.                 System.out.println(z==x+y);
  9.                 System.out.println(z==(x+y));
  10.                 System.out.println((x+y).equals(z));
  11.         }
  12. }
复制代码
为什么结果是false
false
true





评分

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

查看全部评分

5 个回复

倒序浏览
== 比较的是对象的地址
回复 使用道具 举报
class StringDemo
{
        public static void main(String[] args)
        {
                String x = "hello";
                String y = "world";
                String z = "helloworld";

                System.out.println(z==x+y);
                System.out.println(z==(x+y));               //因为是不同的对象,所以为false
                System.out.println((x+y).equals(z));        //在字符串中重写了equals方,所以不再比较堆内存地址,而比较它们的内容是否相同, 因为S+y和Z的哦你容相同,所以为ture
        }
}

评分

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

查看全部评分

回复 使用道具 举报
这写 字符串是"对象"所以比较的地址,地址不同所以false.而第三个通过equals比较的是对象里的内容。所以true
回复 使用道具 举报
这里用的是== 地址引用的比较 而 equals是存储地址内容的比较(存取内存中内容的比较) 建议看看老师的笔记
回复 使用道具 举报
==表示你比较的对象的地址,而equals比较的是值。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马