zoukankan      html  css  js  c++  java
  • 3.7 关系操作符

    在介绍关系操作符之前先来看如下例子:

    Tank t1 = new Tank();
    Tank t2 = new Tank();
    t1.level = 10;
    t2.level = 10;
    System.out.println(t1 == t2);
    System.out.println(t1 != t2);

    output:

    false
    true

    解释:尽管对象的内容相同(都是10),然而对象的引用却是不同的,而== 或者 != 比较的是对象的引用。 

      如果想比较对象的实际内容,此时,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于“基本类型”。

    看下面例子:

    Tank t1 = new Tank(10);
    Tank t2 = new Tank(10);
    System.out.println(t2.equals(t1));
    
    class Tank {
        public Tank(int k) {
            level = k;
        }
        int level;
    };

    output:

    false

    why????

    这是由于equals()方法的默认行为是比较引用。所以,除非在自己的新类中覆盖equals()方法,否则不可能出现我们希望的行为。

    class Tank {
        public Tank(int k) {
            level = k;
        }
        int level;
        
        public boolean equals(Tank v)
        {
            return (this.level == v.level);
        }
        
    };

    总结:使用 == 或者 != 是直接比较对象的引用,尽管对象的内容相同,但是并不一定相等。

    一般地,我们的新建类都会实现方法equals(),用于比较对象的值或内容,而不是比较对象的引用。默认地,equals()方法比较的是对象的引用。

  • 相关阅读:
    Less资源汇总
    Less函数说明
    Less使用说明
    Less 简介
    tomcat-users.xml 配置
    java project打包生成jar包(通用)
    5分钟理解String的'+'的性能及原理
    字符串"+"操作的原理
    Shell脚本实现对文件编辑
    mysql关于聚集索引、非聚集索引的总结
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3334605.html
Copyright © 2011-2022 走看看