【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 @ 2022-07-07 21:14  淡怀  阅读(337)  评论(0编辑  收藏  举报