1、如果比较基本类型,则用==比较,不能用equals
2、对于基本类型的包装类型,如Boolean,Character,Byte,Short,Integer,Long,Float,Double,用==是比较地址的,用equals是比较类型的。
==在比较引用和基本类型是具有不同的功能。在比较基本类型时,若值相同,则返回true,比较引用时,若引用指向内存中的同一对象,则返回true,即比较引用的地址(地址在栈中)
Equals比较两个变量是否是对同一个对象的引用,不能比较基本数据类型,比较两个对象的内容(内容在堆中)。
如:String s1=”abc”;String s2=”abc”,则s1==s2返回true,因为他们地址相同,s1.equals(s2)也返回true,因为他们的内容也相同。
又如:String s1=”abc”;String s2=new String(“abc”);则s1==s2返回false,s1.equals(s2)返回true,因为他们地址不同但是内容相同,指向的不是同一个对象,虽然对象的内容相同
简单的来讲,==比较的是值,equals比较的是对象的内容。
|
|