Integer等包装类及String类的对比 ==与equals()方法的机制与不同

除了四类八种基本数据类型,还有一些基本数据类型对应引用类型(Integer等包装类和作String类)那么这些引用类型的== equals()方法有什么区别呢?

String引用类型对比

String类型对比比较特殊
上代码

    //String作为类来使用  使用new关键字实例化
        String s1 =new String("ABC");
        String s2 =new String("ABC");
        System.out.println("String类运行结果是");
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        //String作为基本变量来使用 使用=实例化
        String s3 ="ABC";
        String s4 ="ABC";
        System.out.println("当作基本变量,运行结果是");
        System.out.println(s3==s4);
        System.out.println(s3.equals(s4));

String类运行结果是
false
true
当作基本变量,运行结果是
true
true

注意到==结果不同,首先大家要明确==对比的是引用,为什么当作基本变量赋值时就相同了呢

s1,s2 使用new声明 在Java看来是两个位置的两个不同对象,引用不同 ==返回false;
s3 ,s4将String当作基本变量来使用;String是不变变量 s3赋值ABC后
找到了直接把ABC的引用赋给s4
此时s3 s4地址完全相同
在java看来完全是一个变量 == equals()方法返回值是true

包装类== 与 equals()方法对比

那么类似的其他基本数据类型的包装类呢
Integer等其他基本数据类型对应的引用类,也称包装类的== equals对比

        Integer i1 =new Integer(1);
        Integer i2 =new Integer(1);
        System.out.println("当作类运行结果是");
        System.out.println(i1==i2);
        System.out.println(i1.equals(i2));
        Integer i3 =1;
        Integer i4 =1;
        System.out.println("当作基本数据类型运行结果是");
        System.out.println(i3==i4);
        System.out.println(i3.equals(i4));

当作类运行结果是
false
true
当作基本数据类型运行结果是
true
true
和String完全一样

总结
  • 类 即使用new实例化时,两个地址 ==是false;
  • 当成基本数据类型赋值时,内容相同则占用同一地址==是true;
  • equals对比内容 都是true;

所以大家使用包装类及String类时 推荐使用equals()方法比较,不容易产生问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值