Java中整型数值==和equals的处理

前言

equals 比较内容, == 比较地址。

PS.

equals在Object类中,作用和==完全是一样的,都是对对象地址的比较,不是比较值。

在String类中,equals被重写成了字符串的具体值的比较,而不再是地址比较。

 

==:

1)基本类型之间互相比较:值进行比较。

比如:

         return 5==6;

返回false

PS.

         byte n1 = 5;

         short n2 = 129;

         return n1 == n2;

返回false,n1会隐式转为short,低级向高级是隐式类型转换,高级向低级必须强制类型转换,byte<short<int<long<float<double

2)一边是基本类型,一边是包装类型:

同类型的进行比较,如Integer 与int,Long与long进行==比较时,会自动拆箱。

比如:

         int a = 220;

         Integer b = 220;

        System.out.println(a==b);//true

不同类型之间进行比较,如果有一方为非包装类,则会自动拆箱,且会进行自动向上转型。

比如:

         int a = 220;

         Short b = 220;

        System.out.println(a==b);//true

3)两边都是包装类型:

如果两边是同类型的包装类,比较地址。

如果两个都是new出来的对象,直接为false,如果是常量赋值,会引用存在的缓存对象,关于包装类型的;如果两缓存机制,请自行了解;

如果为不同包装类,则不会拆箱,且不能比较,编译会报错。

 

equals():

先比较类型,再比较值

equals可以用来比较字符串以及引用类型是否相等;但无法比较值类型,如整形int,double

1)基本类型之间互相比较:无法比较。

2)一边是基本类型,一边是包装类型:

同类型的进行比较,如Integer 与int,Long与long进行比较时,先会进行自动装箱,基本型转换为其封装类型

不同类型之间无法进行比较。

3)两边都是包装类型:

如果是同类型包装类的话,直接比较值;

如果是不同类型包装类,不会进行拆装箱,不能比较,编译会报错。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值