java基础中关于=和equals的区别

两个基本类型变量相比较,=是比较它们的值是否相等

两个对象相比是比较他们的地址值是否相等

equals()是比较对象的属性值是否相等,前提是这两个对象必须重写object对象的equals方法,object对象是所有对象的基类,也就是所有对象都继承了object对象,如果不重写equals方法,object对象原有的equals方法作用和=是一样的

基本类型是没有equals方法的,除非是他的包装类

例如 int num=10,int num2=10,=的作用就是比较10和10是否相等

现在创建两个对象

student stu1=new student("李明","男");

student stu2=new student("詹尼","男");

假如stu1在栈内存存储的地址值xx0214,stu2在栈内存存储的地址值是xy241

=比较就是xx0214和xy241是否相等,而equals就是比较他们的属性值了,对象都是存储在堆内存里面的,而栈内存里面只是存放他们的对应的地址值,当使用对象的时候都是先去栈内存里面拿得到它的地址值然后去堆内存里面找

猜你喜欢

转载自www.cnblogs.com/zhangxiaozhen/p/9703931.html