equasl 和 ==

instanceof

instanceof 是 Java 的一个二元操作符,类似于 ==.

测试它 左边的对象 是否是它 右边的 的实例,返回 boolean 的数据类型

      if (o instanceof Vector)
      System.out.println("对象是 java.util.Vector 类的实例");
      else if (o instanceof ArrayList)
      System.out.println("对象是 java.util.ArrayList 类的实例");

equals , ==

==

1.基本数据类型:char int byte 等用 直接比较值
2.对象用的时候 比较地址,即是否是同一个对象

equals

1.是object类的方法, 可能在其他子类中被覆写, (String, Integer等) 由此可知对象才有 equals方法,int,byte,char这样的基本数据类型无.
2.看源码 可知obejct类中相当于==,(比较地址)
但在其他类中很可能覆写了,只比较值 String Integer都是

object

public boolean equals(Object obj) {
        return (this == obj);
    }

Integer

private final int value;
public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}  
public int intValue() {
    return value; }

String

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String aString = (String)anObject;
            if (!COMPACT_STRINGS || this.coder == aString.coder) {
                return StringLatin1.equals(value, aString.value);
            }
        }
        return false;
    }
    // StringLatin1.equals(value, aString.value)
        public static boolean equals(byte[] value, byte[] other) {
        if (value.length == other.length) {
            for (int i = 0; i < value.length; i++) {
                if (value[i] != other[i]) {
                    return false;
                }
            }
            return true;
        }
        return false;
    }

总结

  • int char等基本数据类型只能比较值,用 ==
  • String Integer等需要new的对象,
    (对于这两是如此,对于其他看源码,可能equals相当于 ==)
    个人理解::: 因为 ==已经可以比较地址了,所以 补充equals用来比较值…

比较是否是同一对象是用 ==
只比较值时用 equals

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值