java中==和equals()的区别

java中==和equals()的区别

在java学习和面试中经常遇到这个问题 == 和equals 的区别
1 . ==比较的两个对象的堆内存地址,如果内存地址相同,则返回true,equals是比较的对象的值

        // 初始化变量 int
        int a=10;
        int b=10;
        /* 输出结果为true,对于数值类型的数据只要值相等,便会返回为true */
        System.out.println(a==b);
        // 初始化变量 String
        String a1="123";
        String b1="123";
        /* 输出结果为true "123" 在常量池里 123 同时指向了a1 b1,所以这种情况也返回 true*/
        System.out.println(a1==b1);
        // 初始化变量 String
        String a2="123";
        String b2="123";
       /* 输出结果为 true ,他们不仅指向的地址相同,值也想等 ,则返回为true */
        System.out.println(a2==b2);

2 不同的对象是什么个情况

       // new 新的对象
        String a3=new String ("123");
        String b3=new String ("123");
        /*  输出为false  产生了新的对象 地址不同 则返回为false  */
        System.out.println(a3==b3);
        /*  输出为 true String中将equals 方法进行了重写,比较的是所指向的对象的内容 */
        System.out.println(a3.equals(b3));

3 对于包装类型数据(integer)的特殊情况

       // integer 类型数据
        Integer a4=127;
        Integer b4=127;
        /* 输出为true*/
        System.out.println(a4==b4);
        Integer a5=128;
        Integer b5=128;
        /* 输出为false  Integer 在常量池中的存储范围为[-128,127],127在这范围内,因此是直接存储于常量池的,而128不在这范围内 所以是创建了两个不同的对象 来保存这个值  */
        System.out.println(a5==b5);

总结
1 ==,如果用于基本数据类型的变量,则比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是指向对象的地址
2)equals,equals方法不能用于基本数据类型的变量 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;而String对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等,java中很多类都要求equals方法进行了重写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值