关于运算符==与equals()区别,详解

本文详细探讨了Java中运算符`==`与`equals()`的区别。`==`用于判断两个变量或实例是否指向同一内存空间,而`equals()`除了判断内存空间外,还会在不相等的情况下比较字符内容。`equals()`方法内部实际上也使用了`==`进行判断。此外,文章还讨论了栈和堆的内存分配以及String Pool的概念。
摘要由CSDN通过智能技术生成

区别:

  • 1.==是Java运算符  equals()是Java方法    
  • 2.==判断的是两个变量或实例是否指向同一个内存空间。equals()判断的是两个变量或实例是否指向同一个内存空间,如果不是指向同一内存空间,那么再逐一判断两个变量或实例的字符[char]是否完全相同。

详解:

第一点,毋庸置疑,8解释。

直接验证第二点....

验证如下:


==判断的是两个变量或实例是否指向同一个内存空间

 String stack = "**";
 String heap = new String ("**");
  • stack 没有New一个String对象,那么stack的创建过程是什么呢?
  • heap New了一个对象,那么heap 的创建过程又是什么呢?

带着这两个问题,我们先了解一下堆栈和String Pool:

    堆、栈都是Java在内存中存储数据的地方。

  •     堆:运行时数据区,动态的创建创建对象时所用到的内存,动态分配内存大小,由于是动态的,所以存取比较慢。用来存储对象、包装类型
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值