博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中关于“==”和“equals()”方法的区别
阅读量:4290 次
发布时间:2019-05-27

本文共 1267 字,大约阅读时间需要 4 分钟。

我们想要说清楚java中“==”操作符“equals()”方法的区别,就先来单独谈谈,当我们把它俩分别说清楚了,区别自然就出来了。

总结:

“==”操作符:

a\基本数据类型:比较值是否相等;

b\对象数据类型:比较变量是否指向同一个对象(变量地址值是否相等)。

equals方法:

对象数据类型:比较对象的内容是否相等。

------------------------------------------------------------------------------------------------------------------------------------

1、“==”操作符

      “==”是操作符,专门用来比较值是否相等。分两种情况---基本数据类型的值 和 对象类型的地址(变量) 来说

      1)基本数据类型的比较

int a = 1 ;		int b = 1 ;		System.out.println(a==b);
这是a和b都是基本数据类型int ,a==b的结果就是true。

      2)对象的引用变量是否相等比较(也就是比较两个变量是否指向同一个对象

对象类型代码:

Integer c = new Integer(1) ;

当变量指向的数据是对象类型,那么,这个时候数据是存放在两块内存中:

对象本身(new Integer(1))存放在堆内存中,而变量c存放在栈内存中,此时变量c所对应的栈内存中存储的数值就是对象占用的那块堆内存的首地址。

例子:

Integer c = new Integer(1) ;		Integer d = new Integer(1) ;		System.out.println(c == d );
上面代码,有两个变量c和d,有两个对象,分别是变量c指向对象new Integer(1),和变量d指向对象new Integer(1),第三行代码比较的c==d,是在比较这两个变量是否指向同一个对象,很显然,这是两个对象。随意返回结果是false。

使用堆内存和栈内存图展示如下:

2、equals()方法

equals()方法是用于比较两个对象的内容是否相等

例如下面的代码:

Integer c = new Integer(1) ;		Integer d = new Integer(1) ;		System.out.println(c.equals(d));
两个new Integer(1);语句分别创建了两个对象,然后变量c和d分别指向各自的对象,因为这是两个对象,所以他们的首地址是不同的,也就是说变量c和d在栈内存中存储的数值是不同的,即c==d是false,但是这两个对象的内容是相同的,都是1,所以c.equals(d)返回的值是true。

我们用人来通俗的解释一下:

“==” 操作符  :比较的是==号左边和右边说的这两个人是不是同一个人。

equals()方法 :比较两个人在逻辑上是否相等(假设我们规定:两个人年龄相同或身高相同就算相等)。

你可能感兴趣的文章
以前端架构师的思想看问题:解决单页应用,系统角色请求抢占session发送请求问题
查看>>
jsessionid问题解决方案
查看>>
MySQL和Oracle的delete,truncate
查看>>
idea使用心得(2)-安装设置与创建web项目
查看>>
将项目放到服务器tomcat上运行
查看>>
JS几种变量交换方式以及性能分析对比
查看>>
Android面试一天一题(6)——如何进行技术选型
查看>>
Velocity笔记--使用Velocity获取动态Web项目名的问题
查看>>
安卓学习:如何将一个Activity设置成窗口的样式
查看>>
Android: 自定义 View
查看>>
MySQL-99语法:外连接与内连接-(左内连接多表和查询)
查看>>
Struts2之Struts2-2.5.5 Interceptor
查看>>
Java基础-21总结字符流,IO流编码问题,实用案例
查看>>
Zookeeper请求处理
查看>>
当Java遇见了Html--Jsp……
查看>>
什么是分布式数据存储
查看>>
Java 进阶——类成员初始化顺序
查看>>
厉害了我滴哥,原来验证码是这么造出来的!
查看>>
Oracle数据库中几种非常有用的函数(with……as等)
查看>>
简单学习Nginx之:动静分离
查看>>