彻底搞懂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的区别与相似之处(纯干货建议收藏)
三分钟!彻底搞懂PostgreSQL 和 MySQL 区别之分
Tomcat的启动与关闭:详解启动类Bootstrap和Catalina,彻底搞懂catalina.home和catalina.base的区别和作用范围