在最近做题当中,发现==和equals一直让我傻傻的搞不清楚,因此写这一篇博客,来总结一下
学习的结果。
首先上代码
Integer i1=9;
int i2=9;
Integer i3=Integer.valueOf(9);
Integer i4=new Integer(9);
System.out.println(i1==i2);
System.out.println(i1==i3);
System.out.println(i1==i4);
System.out.println(i1.equals(i4));
结果:
true
true
false
true
简单的说“==”用于比较两个变量的值的大小,通常用于比较两个基本类型的数据或者两个引用
变量,在上例中,我理解的是java会自动调用自动装卸箱机制将封装类型转成基本数据类型,所以这几个变量的数值i1,i2,i3所对应的内存中数值是相等的,图如下:
而equals是Object类的提供的方法之一,equals()方法的是可以被覆盖的,因此,它可以
通过覆盖的方法让它比较数据的内容,例如String类equals方法是用于比较两个独立对象的内容
是否相同,即堆中的内容是否相同。