"=="与equals()的区别
操作符==与对象的equals()方法的比较:
操作符==用来比较两个操作元是否相等,操作元既可以是基本数据类型也可以是引用数据类型;
equals()方法是java.lang.Object类中定义的方法,用来比较两个对象是否相等;
==比较基本数据类型,直接比较值是否相等;
==比较引用类型,要求两个引用变量都引用同一个对象,结果是true,否则false;
Integer n=new Integer(1);
Integer m=new Integer(1);
Integer k=n;
System.out.println(n==m);//false
System.out.println(n.equals(m));//true
System.out.println(n==k);//true
虽然==可以比较引用类;但并不是任意的两个引用类型都可以拿来比较:
1.和null比较是可以的;
2.如果是类类型的引用变量,要求双方的类型相同或有继承关系;
Dog dog=new Dog();
Creature creature=dog;
Cat cat=new Cat();
Animal animal=cat;
System.out.println(dog==animal);//false;
System.out.println(cat==animal);//true;
Dog dog=new Dog();
Cat cat=new Cat();
System.out.println(cat==dog);//编译出错
public boolen isBoolean(Object obj)
{
if(this==obj)
{return true;}
else{return false;}
}//当参数obj引用对象和当前对象为同一个对象,就返回true,否则返回false;
equals()方法:
判断字符串是否为空时,不用equals()方法,会报空指针;
一个类中都可以覆盖其先祖Object类的方法equals()方法,在没有覆盖之前都是调用的equals()方法,
其比较效果和==一样;
Integer n=new Integer(1);
Integer m=new Integer(1);
Integer k=n;
System.out.println(n==m);//false
System.out.println(n.equals(m));//true
System.out.println(n==k);//true
String与 ==,equals()的比较:
String是一个类,所以String str这是一个引用类型得到变量;
String有两重情况:其原理是不一样的:
1.String str="abc";//字面值(直接值)
2.String str=new String("abc");//当做普通的类类型
String str1="abc";
String str2="abc";
System.out.println(str1==str2);//true
System.out.println(str1.equals(str2));//true
浙公网安备 33010602011771号