equals和==的区别_JAVA
程序员文章站
2022-10-03 16:38:56
equals和==的区别总结一下:值类型是存储在内存中的栈中,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,其本身的对象实例数据则存储在堆中。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是比较两个变量在栈中存储的地址是否相同。而equals操作表示两个变量是否是对同一个对象的引用,即堆中的内容是否相同。简单说就是,==比较的是栈内容,equals比较的是堆内容。因此,当equals为真时,==不一定为真。面试回答如果面试官问你《关于==和equals的区别》,该怎么回答完美呢...
equals和==的区别
总结一下:值类型是存储在内存中的栈中,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,其本身的对象实例数据则存储在堆中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是比较两个变量在栈中存储的地址是否相同。而equals操作表示两个变量是否是对同一个对象的引用,即堆中的内容是否相同。简单说就是,==比较的是栈内容,equals比较的是堆内容。因此,当equals为真时,==不一定为真。
面试回答
如果面试官问你《关于==和equals的区别》,该怎么回答完美呢?可以这样说
总结的来说:
1)对于==,比较的是值是否相等
如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
本文地址:https://blog.csdn.net/TOPic666/article/details/107695595
上一篇: 并发编程之ThreadLocal
下一篇: Spring boot自定义国际化不生效