彻底搞懂Java中equals和==的区别

Posted tuzilang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了彻底搞懂Java中equals和==的区别相关的知识,希望对你有一定的参考价值。

java当中的数据类型和“==”的含义:

1.基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值。

2.引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。

对于引用类型,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。

总结: == 的作用:
  基本类型:比较的就是值是否相同
  引用类型:比较的就是地址值是否相同
equals 的作用:
  引用类型:默认情况下,比较的是地址值。
注:不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同。

面试题:请解释字符串(引用数据类型)比较之中“==”和equals()的区别?

  •  ==:比较的是两个字符串内存地址(堆内存)的数值是否相等,属于数值比较;

  •  equals():比较的是两个字符串的内容,属于内容比较。

以后进行字符串相等判断的时候都使用equals()。

以上是关于彻底搞懂Java中equals和==的区别的主要内容,如果未能解决你的问题,请参考以下文章

一文带你彻底搞懂Java和JavaScript的区别与相似之处(纯干货建议收藏)

一文带你彻底搞懂Java和JavaScript的区别与相似之处(纯干货建议收藏)

一文搞懂 == equals和hashCode

三分钟!彻底搞懂PostgreSQL 和 MySQL 区别之分

彻底搞懂$router 和 $route

Tomcat的启动与关闭:详解启动类Bootstrap和Catalina,彻底搞懂catalina.home和catalina.base的区别和作用范围