equals == 和compare to

1.基础的数据类型可以用==号去进行比较,不能用equals比较

2.==比较的是对象的地址,Object.java里的equals方法内部是用==实现的,因此比较的也是地址。至于String,因为String类是Object类的子类,所以比较的是内容。

String a = "qwe";

String b = "qwe";

如果字符串常量池中存在qwe,则该语句并不会创建对象,只是讲字符串常量池中的引用返回而已。
如果字符串常量池中不存在qwe,则会创建并放入字符串常量池,并返回引用,此时会有一个对象进行创建。

也就是当b=b+1的时候会创建一个对象

String a = b;	//这里只是让a这个变量也指向的地址为 1的区域,并没有重新申请内存,因此是地址传递
因此System.out.print(a==b);返回的是TRUE;
String s1 = new String("java");
String s2 = new String("java");
因为会生成两个地址,所以
因此System.out.print(S1==S2);返回的是FALSE;equals返回的是TRUE。eql
3.1
compare to比较的前后两个字符串的asc码的差值参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值,如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值。
BigDecimal类型的比较用compare to 1是大于,0是等于,-1是小宇,前者大、小、等于、后者。
对于BigDecimal的大小比较,用equals方法的话会不仅会比较值的大小,还会比较两个对象的精确度。
BigDecimal的compare to方法中有个matchScale的处理,意思是把精确度低的那个对象转换为高精确度,然后1.2就回等于1.20,用equals因为会比较精度问题,所以会导致1.2不等于1.20


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值