Java中的==和equals的区别

编程 专栏收录该内容
3 篇文章 0 订阅

前言

在学习Java时经常遇到这个问题,虽然很简单,自己也会用,并且哪里该用==哪里该用equals()也是能辨别出来,但是不知道==equals()它俩有啥区别。

特此记录下此片文章,方便以后自己查询时不用再去Baidu、Google、Bing了

区别

1.== 直接判断两个变量名的值是否指向同一个内存空间地址 (如果都指向同一个内存空间地址的话就返回true)
2.equals() 直接判断两个变量名的值是否相同 (如果相同则返回true)


以上简单的说明了==equals()它们的区别,如果想看更详细的内容请继续往下看。

关系运算符 ==

关系运算符返回的是一个boolean类型结果,它计算的是值之间的关系

        int a=3;
        int b=3;

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

        String str1 = new String("hello");
        String str2 = new String("hello");
        String str3 = new String("hello");

        System.out.println(str2==str3);

        str2 = str1;
        str3 = str1;
        System.out.println(str1==str2);

运行结果是true,false,true

解析:System.out.println(str2==str3); 为什么会返回false

因为String str2 = new String("hello");已经new了一个内存空间来存储hello

String str3 = new String("hello");又new了一个内存空间来存储hello

这里判断用的是==关系运算符,上面已经明确说明了== 判断两个变量名的值是否指向同一个内存空间地址(如果都指向同一个内存空间地址的话就返回true) 因此运行结果为false

如果使用的是equals()的话,返回结果则是true

那么会有人问,为什么b不会创建一个新的内存空间呢?

因为a已经创建了一个内存空间了,b就直接指向3了

说人话就是:

1.int b=3;就是使用别人创建好的,举个例子:A花钱建了个公共厕所,B就可以直接花钱使用

2.String str3 = new String("hello");就是别人建别人的,我建我自己的,举个例子:A花钱建了个公共厕所,B也要建一个公共厕所

【Lete乐特个人博客】:https://lete114.now.sh

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页

打赏

Lete乐特

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值