为了账号安全,请及时绑定邮箱和手机立即绑定

==与equals的区别,还有空值比较哪个放在前面哪个放在后面?

空值比较:比如说用户提交一个变量a,有可能是空值,那么判断语句 if(a.equals(null)){} 和 if(null.eauals.(a)){} 哪个正确?

正在回答

2 回答

要明白他们两个的区别首先要知道他俩分别比较的是什么。

先说==。当比较的两边是8种基本数据类型时,==比较的就是变量里的值。举个例子

int i = 1;
int j = 1;
System.out.print(j == j);//这里输出为true,1等于1

当==比较的是对象的时候,比较的并不是变量里的值,而是比较的对象在内存中的地址了。举个例子

String str = new String("hello");
String str1 = new String("hello");
System.out.print(j == j);//这里输出为false,str和str1两个变量的在内存中的地址不一样

然后是equals,这个稍微复杂一点。首先equals方法是所有类的父类Object类里的方法,当子类没有重写equals方法时,调用的是Object类里的equals方法,Object里的equals方法只是简单的比较了一下两个变量的地址。

String类就重写了Object类的equals方法,所以当调用String类的equals的方法时比较的就是字符串是否相等了。还用上面那个例子说明下

String str = new String("hello");
String str1 = new String("hello");
System.out.print(str.equals(str1));//这里输出为true,两个变量里的字符串都是hello

equals是方法,要保证调用equals方法的变量不能为空,所以就不能使用null.eauals.(a),这样会报空指针异常。


0 回复 有任何疑惑可以回复我~
#1

CN_Today 提问者

非常感谢!
2015-12-20 回复 有任何疑惑可以回复我~

if(null.eauals.(a)){},Java里边一般用,用变量的.equals时,变量为空会报错

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

==与equals的区别,还有空值比较哪个放在前面哪个放在后面?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信