值类型与引用类型
众所周知,Java的数据类型分为两类,8种基本的数据类型(byte、short、int、long、float、double、char、boolean)和引用类型。基本数据类型通过对应的包装类与引用类型建立联系。与此同时,这两类数据的存储也不相同,基本数据类型,,也叫值类型,存放在栈内存当中,引用数据类型的变量在栈中仅仅存放引用类型变量的地址,其本身则存放在堆内存当中。
Java中==与equals的区别
==操作比较的是两个变量的值,对于引用类型表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同,该方法继承自Java的根类Object。
总结:
1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)equals方法(equals方法不能作用于基本数据类型的变量),如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的,比较的是所指向的对象的内容。
更多内容:https://blog.csdn.net/beautiful_face/article/details/55210412