欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

equals和==的区别_JAVA

程序员文章站 2022-03-15 09:57:09
equals和==的区别总结一下:值类型是存储在内存中的栈中,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,其本身的对象实例数据则存储在堆中。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是比较两个变量在栈中存储的地址是否相同。而equals操作表示两个变量是否是对同一个对象的引用,即堆中的内容是否相同。简单说就是,==比较的是栈内容,equals比较的是堆内容。因此,当equals为真时,==不一定为真。面试回答如果面试官问你《关于==和equals的区别》,该怎么回答完美呢...

equals和==的区别

equals和==的区别_JAVA
equals和==的区别_JAVA

总结一下:值类型是存储在内存中的栈中,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,其本身的对象实例数据则存储在堆中。

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是比较两个变量在栈中存储的地址是否相同。而equals操作表示两个变量是否是对同一个对象的引用,即堆中的内容是否相同。简单说就是,==比较的是栈内容,equals比较的是堆内容。因此,当equals为真时,==不一定为真。

面试回答

如果面试官问你《关于==和equals的区别》,该怎么回答完美呢?可以这样说

总结的来说:

1)对于==,比较的是值是否相等

如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

如果作用于引用类型的变量,则比较的是所指向的对象的地址

2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象

如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

部分引用于 区别部分 面试回答部分

本文地址:https://blog.csdn.net/TOPic666/article/details/107695595

相关标签: java