下面是jdk6.0中java.lang.Boolean的booleanValue方法, 如紫竹所说, 会报NullPointException, 个人感觉是在自动拆箱操作的时候, 是调用了这个方法. /** * Returns the value of this <tt>Boolean</tt> object as a boolean * primitive. * * @return the primitive <code>boolean</code> value of this object. */ public boolean booleanValue() { return value; }
Boolean name = null; if(true==name); if(name==true); 这两种写法没有区别。如果name==null的时候都会抛出空指针异常。 正确的写法是if(name). name ==null的情况,在外层判断。 在实际程序当中,虽然name 为Boolean型的,但为空的可能性不太大,因为其包装的是boolean型的变量,这个变量应该不是真就是假,所以基本上不会是null--所以在外层判断这个动作也可以省略了--只有极特殊的情况下,name的值会被别的程序段改写的情况下,才能需要对name进行非空判断。
boolean 是基本数据类型,不存在什么 null 值的问题
这个问题:其实只是一个个人的书写习惯而已,不知道大家有没有自己试着运行一下, Boolean b = null; if (true == b) { //代码不会执行到这里,会抛空. } if (b == true) { //代码不会执行到这里,会抛空. } if (b) { //代码不会执行到这里,会抛空. } //以上因为b是一个空对象,所以不能对它操作 boolean c; //c是一个基本类型,不会为空,但要进行初始化才可用, if (c == b) { //这里编译不通过 } c = false; if (c) { //这样才可以通过编译 }
if(name)多简洁明了啊
有些语言不能写成if(name),
用if(true==name); 可以避免你把"=="写成"="
支持.
就应该写成if(name)
只是这个命名"name"让人费解.
[/Quote]
就是这样的区别吧
Boolean name = null;
if(name==true){
。
}
而其它地方在写时,尽量把常量写在符号前边。
如:name.equals("0")写成"0".equals(name)这种形式可以有效地避免空指针异常
下面是jdk6.0中java.lang.Boolean的booleanValue方法, 如紫竹所说, 会报NullPointException, 个人感觉是在自动拆箱操作的时候, 是调用了这个方法. /**
* Returns the value of this <tt>Boolean</tt> object as a boolean
* primitive.
*
* @return the primitive <code>boolean</code> value of this object.
*/
public boolean booleanValue() {
return value;
}
而这个if(name==true); 如果name为NULL的话,就会触发异常
但是if(true==name){}不会抛异常,说明程序本身是没问题的,只是if里面的表达式不满足条件,即ture!=null,所以if大括号里面的程序体不会执行。
把name 防到后面就算 name 是 null, 程序也不会终止啊。
if("abc".equals(userName))
与
if(userName.equals("abc"))
类似,如果userName则可能出现NullPointException,但是把值取前就避免了这种情况发生,少写个
if(userName==null)
和乐而不为
2. 如果name是boolean却在打印前被赋予了null值,则编译出错,因为boolean类型不能为null。无论如何编译都通不过,何来运行时异常?基本数据类型何来null值?boolean(其实是int)也能抛空指错真是活见鬼了,它能指谁?
if(name==true){
。
}
引用老紫竹的代码试编译了一下,这样的确不能通过编译..33楼,谢谢提醒
if(name==true); 没有区别 唯一一点区别是,当你写程序时,
如果不小心吧f(name==true); 写成f(name=true); 你就很难排查出错误,
但是,如果把if(true==name);写成if(true=name);,编译器能够自我排查出错误
这样的问题一般是面试的时候会被问到的。就像你说的,脑子被灌水了,或者出题的人想要显示他比你高明多少。
上面说的很清楚,把变量放到后面,写代码的时候可以避免一些BUG的产生。比如把判断语句写成附值语句等。
if(true==name);
if(name==true); 这两种写法没有区别。如果name==null的时候都会抛出空指针异常。
正确的写法是if(name).
name ==null的情况,在外层判断。
在实际程序当中,虽然name 为Boolean型的,但为空的可能性不太大,因为其包装的是boolean型的变量,这个变量应该不是真就是假,所以基本上不会是null--所以在外层判断这个动作也可以省略了--只有极特殊的情况下,name的值会被别的程序段改写的情况下,才能需要对name进行非空判断。
boolean 是基本数据类型,不存在什么 null 值的问题
Boolean b = null;
if (true == b) {
//代码不会执行到这里,会抛空.
}
if (b == true) {
//代码不会执行到这里,会抛空.
}
if (b) {
//代码不会执行到这里,会抛空.
}
//以上因为b是一个空对象,所以不能对它操作
boolean c;
//c是一个基本类型,不会为空,但要进行初始化才可用,
if (c == b) {
//这里编译不通过
}
c = false;
if (c) {
//这样才可以通过编译
}
因为你写成=编译通不过
// if(name==true){
// if(name){
if(true==name){
System.out.println("hhhhh");
}
使用 true==name 的好处是 当你漏写一个=号的时候,编译器会提示有错误。
楼上还是有错。
Boolean name=null;
System.out.println(true==name);还是会抛出NullPointerException。所以true==name与name==true没有区别。
请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。
比如if(true == name)
但是后来在公司,要求把变量放前面,我只得服从现在我也有些迷惑,印象中原因就是11#说的那样。
无论运行这两名中的哪一句都会在编译时出现错误“不可比较的类型”;(2) name 为 boolean 类型 并赋值为 null :
无论运行这两名中的哪一句都会在编译时出现错误“不兼容的类型”;(3) name 为 Boolean 类型并赋值为 null :
在编译时都不会出现错误和异常,但是在运行时都会出现NullPointerException空指针异常;