在JVM(java虚拟机)中 内存分为栈内存和堆内存:
当我们创建一个对象(new Object)时,就会调用它的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用,基本数据类型是存储在栈内存中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是2个对象的地址,而equals比较的是2个对象的内容。
显然,当equals为true时,==不一定为true;
(1)“==”
A.用于基本数据类型的比较
B.判断引用是否指向堆内存的同一块地址。
(2)“equals”
用于判断两个变量是否对同一个对象的引用。简单说就是,堆中的内容是否相同