Java基础——equals和==号比较

我们知道,栈内存里面存放的是方法里面的局部变量,可以理解为变量都是放到栈内存中的;堆内存存放的则是对象;

 

==比较:

==可以比较数值类型(byte,short,int,long,char,float,double)和对象

1.如果两个数值类型比较(不一定要求数据类型严格相同),则只要两个变量的值相等,返回true,如下返回的b是true:

Int i = 65; 

float f = 65.0f; 

boolean b = (i == f);

2.如果是两个对象比较,只要对象的内存地址相同(即指向的是同一个对象),则返回true;不同对象(即使内容一样)则返回false;如下返回的是false:

String s1 = new String(“hello”);

String s2 = new String(“hello”); 

boolean b = (s1 == s2);

 

equals比较:

如果使用equals所在的类没有重写equals方法,那么equals比较的是对象的hashcode的ID值,也就是对象的内存地址映射,相当于==比较的结果;

如果重写了equals方法,则根据具体的实现来比较得出结果;如String类重写了equals方法,比较的是字符串的内容是否相等,相等则返回true,否则返回false:

如果两个对象的内容相同,即使内存地址不同(不是同一个对象),都会返回true,如下true:

String s1 = new String(“hello”);

String s2 = new String(“hello”);  

s1.equals(s2) ---->true

 

总结:

==比较的是对象的内存地址,equals没有重写的时候也是比较对象的内存地址,重写了则根据具体实现来比较结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值