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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fengche 中级黑马   /  2013-10-19 15:47  /  1450 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 fengche 于 2013-10-19 17:30 编辑
  1. public class AnimalFarm{
  2.     public static void main(String[] args){
  3.         final String pig = "length: 10";
  4.         final String dog = "length: " + pig.length();
  5.         System.out. println("Animals are equal: "
  6.                             + pig == dog);
  7.     }
  8. 打印结果false而没有Animals are equal:这是为什么?
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 風諾 于 2013-10-19 15:54 编辑

class AnimalFarm{
    public static void main(String[] args){
        final String pig = "length: 10";
        final String dog = "length: " + pig.length();
        System.out. println("Animals are equal: "
                            + (pig == dog));//运算顺序从左到右,加括号吧
    }
}

不加括号就先是字符串相加,而后才判断 == 了
回复 使用道具 举报
        System.out. println("Animals are equal: "+ pig == dog);
        System.out. println(("Animals are equal: "+ pig) == dog);
        System.out. println("Animals are equal: "+ (pig == dog));

打印结果:
   
          false
          false
          Animals are equal: false

相信你已经明白了
         

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 赖波 于 2013-10-19 17:24 编辑
  1. <div class="blockcode"><blockquote>
  2. <blockquote>
复制代码
public class AnimalFarm{
    public static void main(String[] args){
       final  String pig = "length: 10";
       final String dog = "length: " + pig.length();
       System.out.println("Animals are equal: "+ pig == dog);
       System.out.println("--------------以下测试--------------");
        System.out.println("pig的hashCode:"+pig.hashCode());//一般hashCode值是内存地址显然这不是
        System.out.println("dog的hashCode:"+dog.hashCode());
        System.out.println("pig的长度:"+pig.length());
        System.out.println("dog的长度:"+dog.length());
        boolean flag=pig==dog;
        System.out. println("pig,dog用==的比较:"+flag);
        System.out. println("pig,dog用equals的比较:"+pig.equals(dog));
        /*以上可以得出:字符串,用"equals"去比较,"=="不好,
         * 再看帮助文档:
         *
         * String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现(*这重点,可以说String是对象了*)。
   字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
         * "equals"方法是这样说的:将此字符串与指定的对象比较
         * "=="方法是比较内存地址的
         *
         * */
    }
}

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1 呃,有点偏题了

查看全部评分

回复 使用道具 举报
赖波 发表于 2013-10-19 17:02
public class AnimalFarm{
    public static void main(String[] args){
       final  String pig = "len ...

唉,真的偏了,非常感谢给我感情技术分
回复 使用道具 举报

如果楼主已经解惑,请将帖子改为提问结束
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马