对于值类型来说是没有equals 方法的。
equals 是引用类型的比较方法,但==也有能比较引用类型。
它们的区别在于:
equals比较的是两个 引用类型的值是否相等;而==比较的是内存地址是否相同,是绝对的相等比较。
例如:String a = new String("abc");String b = new String("abc");
new了两个引用类型的变量 a,b
equals比较:a和b是相等的,因为它们的值都是 abc;
==比较:a和b是不等的,因为它们是声明的不同变量,它们指向的内存地址是不同的,
相当于两个人只是长得一模一样,但门牌号不一样(可以这样理解);
特例:
关于string的特例:
例如:String a = "abc";String b = "abc";
声明了两个引用类型变量a,b
==情况下,它们也是相当的,为什么呢?String也是引用类型为什么会相当呢?
原因是因为java vm(虚拟机) 在处理String声明时,是先到内存池中找有没有相等的
有就指向它,没有就创建;因此两个String指向的是同一个地址,所以相等。 |