作为一个先学的C语言,然后学习JAVA语言的小白,“==”和“equals”的用法总是弄混。往往自己感觉对了,却得不到正确的结果。以下纯为个人见解,希望看到的小伙伴只是参考,详细具体的还要看大神的博文 =_= 。
“==”在C 里面就是判断两个值相等才用到的,“equals”是啥,它在C中还没出生呢,^_^ 或者是隐藏的够深,我不认识它,于是到了JAVA中就是习惯性的将“==”和“相等”这个概念联系在一起。
而“equals”也可以和“相等”这个概念挂钩,这么神奇?Java居然写了两个方法来实现一个功能?显然不可能,每个都有着不同的意义。
1.相同和不同
1.1 “==”在JAVA中可以用来判断基本数据类型(值是否相同),“equals”判断String对象的内容是否相同。
String a = "abc";
String b = "abc";
System.out.println(a==b); //true
System.out.println(a.equals(b)); //true
1.2 “==”在JAVA中可以用来判断引用是否指向同一地址(对象是否相同)“equals”判断不同对象是否是对同一对象的引用。
//不同对象
String a = new String("abc");
String b = new String("abc");
System.out.println(a==b); //false
System.out.println(a.equals(b));//true
//相同对象
b=a;
System.out.println(a==b); //true
System.out.println(a.equals(b));//true
2.判断一个String是否为null
2.1 经常会遇到这样一个问题,String是否为空,直接想到的是String!=null,然而有的时候String==""也要排除,我们可以这样想却不能这么写,因为该String是一个对象的时候String==""就不对了。
if(a!=null&&!a.equals("")){
}
把a!=null放在前边是因为,如果a==null去直接判断a.equals(“”)会报空指针错误。