【Java】比较两个变量是否相等 什么时候用“==” 什么时候用“equals”

复制代码
    public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(1);
        System.out.println(a == b); // false(==:对比的是两个变量的内存地址,)
        System.out.println(a.equals(b)); // true

        System.out.println("=============================");

        Integer aa = 1;
        Integer bb = 1;
        System.out.println(aa == bb); // true
        System.out.println(aa.equals(bb)); // true


        /**
         * 总结
         *
         * java与python的“==”,刚好相反
         *
         * Java
         *  “==”:对比的是内存地址
         *  “equals”:对比的是值(如Integer的equals是把对象转换为Integer类型然后再通过Integer类的intValue方法取值)
         *
         * Python
         *  “==”:对比的是值
         *  “is”:对比的是内存地址
         *
         */
    }
复制代码

 

 

备注:java基本数据类型(4类8种

 

类型

默认值

整数类型

byte

0

short

0

int

0

long

0L

浮点类型

float

0.0f

double

0.0d

字符类型

char

'u0000'

布尔类型

boolean

false

 

 

"==":对比的是两个变量(对象)的内存地址

"equals":对比的是两个变量(对象)的(只有封装后对象才会有equals方法)

 

 

总结:

1、如果两个变量是基本数据类型(如int、char等),则直接用"=="对比是否相等即可,因为他们的值是一个常量,在内存中的地址是一样的(值一样的常量在内存中的地址也是一样的)

2、如果两个变量是封装后的数据类型(如Integer、String等),则用"equals"对比是否相等,因为他们是属于不同的对象,虽然值可能是一样的,但这两个对象在内存中的地址肯定不一样

posted @   淡怀  阅读(338)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-07-07 【数据分析】+【Python】+股票数据分析
点击右上角即可分享
微信分享提示