Android学习之路------ ==、equals、instanceof区别

本文详细解析了Java中基本数据类型与对象类型的比较方法,包括==与equals的区别及应用场景,以及如何使用instanceof和getClass进行类型判断。通过具体代码示例展示了不同情况下的比较结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型

==用于比较值是否相等

对象

  • ==用于比较两个对象的起始内存地址是否相等
  • equals也用于比较两个对象的起始内存地址是否相等,因此大部分情况下,==和equals作用是一致的,但是如果某些对象重写了equals方法,那么结果就不一样了。
    比如常见的String类,由于重写了equals方法,因此String的equals方法实际上比较的是字符串的值是否相同,而==比较的是字符串的起始地址是否相同


instanceof
同时对于instanceof来讲,主要是比较某个对象是否是后一个类的实例或者是后一个类的子类的实例

public class A{

}
public class B extends A{

}
class C{
    void main(){
        A a1 = new A();
        A a2 = new B();
        B b = new B();
        boolean flag = a1 instanceof A;//返回true
        flag = a1 instanceof B;//返回false
        flag = a2 instanceof B;//返回true
        flag = b instanceof A;//返回true
        flag = b instanceof B;//返回true

    }

}


如果我们要判断某个对象是否是指定的类时,我们可以使用getClass+equals来进行判断,getClass返回的是运行时对象的class对象,.class返回的是编译时类的class对象

public class A{

}
public class B extends A{

}
class C{
    void main(){
        A a1 = new A();
        A a2 = new B();
        B b = new B();

        boolean flag = a1.getClass().equals(B.class);//返回false
        flag = a1.getClass().equals(A.class);//返回true
        flag = a2.getClass().equals(A.class);//返回false
        flag = a2.getClass().equals(B.class);//返回true

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值