==和equals的区别

在JVM(java虚拟机)中 内存分为栈内存和堆内存:

当我们创建一个对象(new Object)时,就会调用它的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用,基本数据类型是存储在栈内存中。

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

==比较的是2个对象的地址,而equals比较的是2个对象的内容。

显然,当equals为true时,==不一定为true;

(1)“==”

A.用于基本数据类型的比较

B.判断引用是否指向堆内存的同一块地址。

(2)“equals”

用于判断两个变量是否对同一个对象的引用。简单说就是,堆中的内容是否相同

你可能感兴趣的:(==和equals的区别)