首页 > 代码库 > java中,==跟equals的区别

java中,==跟equals的区别

    在java中,经常有一些刚入行的新手分不清==跟equals的区别。==操作符是专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或者两个变量是否相等,只能用==操作符。如果一个变量指向的数据是对象类型,这时候就涉及了两块内存,对象本身占用已快内存,变量本身也占用一块内存,例如:Object obj = new Object();中,变量obj是一个内存,new Object();是另一个内存。此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存。对于指向对象类型的变量,如果要比较两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。然而equals方法是对两个独立的对象的内容进行比较,就好比比较两个人的长相,首先两个对象是独立的。例如:String a = new String("str"); String b = new Stirng("str"); 两条new语句创建了两个对象,然后用a跟b两个变量分别指向其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a跟b中存储的数值是不相同的,所以,如果是a==b将返回false,而a.equals(b)则是返回true.

    另外声明一点,如果一个类没有自定义的equals方法,那么将继承Object类的equals方法。从Object继承的,就是使用==操作符,也是比较这两个变量指向的是否是同一个对象,这时候用==跟equals会得到同样的结果

java中,==跟equals的区别