pstar

== 运算符

  • ==是运算符
  • 可以使用在基本数据类型变量和引用数据类型变量中
  • 基本数据类型之间(布尔值除外)存在自动类型转换,10==10.0A==65 均为true
  • 如果比较的是基本数据类型,那么比较的是数值是否相等(不一定类型相同)
  • 如果比较的是引用数值类型,那么比较的是地址值
  • 注意!在使用该运算符时应保持两边类型一致

equals 方法

  • 属于java.lang.Object类内部的方法

  • 该方法需要通过一个对象调用(适用于引用数据类型)

  • String Date File 包装类等都重写了Object 中的 equals 方法,重写后比较的不再是引用的地址,而是内部真实的内容。


  • Object 中的 equals

        public boolean equals(Object obj) {
            return (this == obj);
        }
    
  • String 中的 equals

        public boolean equals(Object anObject) {
            if (this == anObject) {
                return true;
            }
            if (anObject instanceof String) {
                String anotherString = (String)anObject;
                int n = value.length;
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }
    
  • 包装类中的 equals

        public boolean equals(Object obj) {
            if (obj instanceof Integer) {
                return value == ((Integer)obj).intValue();
            }
            return false;
        }
    
  • Date类中的 equals

        public boolean equals(Object obj) {
            return obj instanceof Date && getTime() == ((Date) obj).getTime();
        }
    

重写 equals 方法的五条原则

  1. 对称:如果x.equals(y)返回的是true,那么y.equals(x)应为ture
  2. 自反:x.equals(x)应为true
  3. 传递:x.equals(y)和x.equals(z)均为true,那么y.equals(z)应为true
  4. 任何情况下,使用该方法与null比较应该为false
  5. 任何情况下,不同类型之间的比较应为false

分类:

技术点:

相关文章: