jdk5以上才可以这么写,个人认为“自动拆装箱”虽然简化了java的使用,但是实际上从入门讲对初学者来说又加了门槛。 public static void main(String[] args) { boolean a = false; if (a = true) { System.out.println("防止把==写成=,true=a肯定不行的"); } Boolean b = null; if (null != b && b.booleanValue() == true) { System.out.println("防止空指针异常b!=null效果一样的"); } }
public static void main(String [] args) {
Boolean n = null;
if(n == true ) {
System.out.println("你认为呢这不会报空异常吗?");
}
}
}
而 boolean 则没有这个问题,所以一般建议true放在前面,而变量放在后面,更普遍的例子if("ADD".equals(request.getParameter("action"))如果把顺序写烦了,在没有参数时,就会出现空指针的异常了!
将下面的例子拿去做实验! 你就明白其中的道理:
public class Test6 {
public static void main(String [] args) {
String n = null;
if("fdsfasdf".equals(n) ) {
System.out.println("你认为呢这不会报空异常吗?");
}
}
}
例子2: public class Test6 {
public static void main(String [] args) {
String n = null;
if(n.equals("fdsfasdf") ) {
System.out.println("你认为呢这不会报空异常吗?");
}
}
}
public static void main(String[] args) {
boolean a = false;
if (a = true) {
System.out.println("防止把==写成=,true=a肯定不行的");
}
Boolean b = null;
if (null != b && b.booleanValue() == true) {
System.out.println("防止空指针异常b!=null效果一样的");
}
}
请在1.4下试试看,编译通不过
别人问的是布尔型变量,他没说b是不是对象,在不同的jdk下会有不同的效果,但是你说的字符串肯定是对象,字符串这样用肯定抛异常
你又满意调用对应对象的方法,,
况且 你用boolean n = null; 就已经报异常了
他用的是Boolean
b == true;
true == b;
么写的,可写成 if(b)如果 b 是 Boolean 类型,那不管是 if(b == true) 还是 if(b == true) 这
样,由于涉及自动拆箱,在内部会把 Boolean 转换成 boolean 类型,由于 boolean
并不能接收 null 值,因此都会报出空指针异常。