if(a="b")和if("b"=a)哪种写法好,为什么?
如题。我知道if("b"=a)更好,但是不知道为什么,求教!
------解决方案--------------------定值在前,变量中后,,可以屏蔽
空指针。
------解决方案--------------------
public class Here {
public static void main(String[] args) {
String a="ab";
String b="ab";
//我喜欢这样写,定值在前,变量中后,,可以屏蔽空指针。
if("ab"==a&&a.length()>0){
System.out.println("equal");
}else{
System.out.println("not equal");
}
if(b=="ab"&& b.length()>0 ){
System.out.println("equal");
}else{
System.out.println("not equal");
}
}
}
------解决方案--------------------
楼主说的,如果使用==来比较的话,是一样的。
s == "s" 和 "s" == s 没有区别,也不存在空指针的问题。
空指针的是在使用方法对比的时候出现的,如equal() :
如下面代码所示,第一句会抛出异常,因为s是null,null没有equal()方法,这就是
空指针异常。
而第二句就会正常执行,因为"Hello"是常量String,肯定有equal()方法,所以不会抛出异常。
这样做,就提高了代码的健壮性。
String s = null;
s.equal("Hello");
"Hello".equal(s);
------解决方案--------------------== 比较的是是否引用同一个实例, equals比较的是内容相同否
------解决方案--------------------我知道 LZ的意思,其实这种写法确实比较好,比较安全。
目的就是为了防止空指针,在java中,没有“指针”,我就不说指针了。
我举例给你你就懂了。
public void read(String value){
if (value.equals("0")) {
System.out.println("input 0!");
}
}
如果传进来的是 null的话,就出现
NullPointerException (最常见的异常,因为引用为 null,而你仍然调用其方法),如果是另一种 表示,就不会出现我说的原因了。
我说的蛮清楚了吧
------解决方案--------------------呵呵 就是为了防止写出你发帖这种 才说的第二种好
用第一种写出你发帖这种 编译器就过了 不好拍错
常量写前面少写了一个等号编译器会报错
不能对常量赋值你就看出来了
其他的没什么
------解决方案--------------------下面这种写法,万一 a为null 那么会抛出NullPointerException
if (a.equals("b")) {
// do something
}
而下面这种写法,即使a为null,那么"b".equals(a) 也只会得出false,不会抛出异常
if ("b".equals(a)) {
// do something
}