JAVA中equals和==的区别

先说“==”

” 是一个常用运算符,在比较中经常用到,

  • 基本数据类型的用“==”进行比较的时候,看的值是不是相同;忽略数据类型,只看数值,布尔类型的不能和其他基本数据类型进行比较。
  • 引用数据类型使用 “==”是比较的内存中的地址值是否一致

基本数据类型的比较:

在这里插入图片描述
在这里插入图片描述

写出所有的基本数据类型,进行比较,即可。在基本数据类型使用 == “”时候,只是比较了数值是否一样,忽略了类型的不同。 其中要注意char类型的特殊情况,比如:

char a ='A';
int b=65;
System.out.println(a==b);

这个结果其实是 true;因为char类型的A在内存中的ascii码 就是65 ,所以能返回 true;

引用数据类型的比较:

String是一个类,自然就是引用数据类型,但是String可以直接赋值,产生一个对象。当值是一样的时候,返回 true,

String a = "zhangguan";
String b ="zhangguan";
System.out.println(a==b);// true
System.out.println(a.equals(b));//true

String 中 使用 equals() 时候,其实走的方法是String 类自己的重写。
原本equals()方法是Object 类中的方法,String类进行重写之后,在调用equals()时,走的是自己重写的方法,源码如下:
在这里插入图片描述

自定义引用数据类型的比较:★★★★★★

声明了一个People类,然后实例化两个对象,使用==进行比较 返回false,因为两个对象在 堆空间中的 地址不一样,所以返回fase;

 People p1 = new People();
 People p2 = new People();
 System.out.println(p1 == p2); //false

关于equals方法:

对于对象的比较,如果你没有对object类中的 equals方法进行重写,那么自然就走 object类中的equals方法,我声明的People类中,并没有对该方法进行重写,所以走父类object中的方法。返回false,比较父类object中的equals方法 比较的也是地址值是否一直:

        People p1 = new People();
        People p2 = new People();
        System.out.println(p1.equals(p2));//false

java源码:
在这里插入图片描述
如果你重写了equals的方法,就能自己去定义两个对象是否一直了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangguan96

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值