if(true==name);
if(name==true);
这个2个有什么区别的

解决方案 »

  1.   

    没啥区别。不如写if(name)算了,还要多打些字。
      

  2.   

    呵呵,楼主不要这么深究啊,这么想下去会走火入魔哦
    if(name)多简洁明了啊
      

  3.   

    在java中都写成if(name)。
    有些语言不能写成if(name),
    用if(true==name); 可以避免你把"=="写成"="
      

  4.   


    支持.
    就应该写成if(name)
    只是这个命名"name"让人费解.
      

  5.   

    表面上没什么区别 , 实际上, 如果 当name为null时, if(name==true);  就会触发 NullPointerException , 而 if(true==name);就可以避免
      

  6.   

    if(name==true);  就会触发 NullPointerException , 而 if(true==name);就可以避免
    [/Quote]
    就是这样的区别吧
      

  7.   

    恩,在JDK 5 以后,就是楼上说的区别,比如
    Boolean name = null;
    if(name==true){
      。
    }
      

  8.   

    楼上正确,在这种情况下就会报空指针异常所以在java中尽量写为if(name){}的形式
    而其它地方在写时,尽量把常量写在符号前边。
    如:name.equals("0")写成"0".equals(name)这种形式可以有效地避免空指针异常
      

  9.   


    下面是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;
        }
      

  10.   

    有区别,对于if(true==name); 不会引发异常
    而这个if(name==true); 如果name为NULL的话,就会触发异常
      

  11.   

    字符串类型有必要分前后,防止为NULL,产生异常,逻辑性有必要吗?不懂
      

  12.   

    我还是不明白啊。哪位大大说说让它抛出异常,是好事啊,这个异常说明我程序中有错误啊,我要修改程序啊。你那个 “if(true==name);就可以避免异常”, 这种写法,明明我源程序中可能有错误,你这个式子“if(true==name);就可以避免异常” 还要把我的异常避免掉,不就是替我掩盖了程序中的错误吗?想不通啊。。
      

  13.   

    抛出异常说明你程序有错误,所以你需要修改程序。
    但是if(true==name){}不会抛异常,说明程序本身是没问题的,只是if里面的表达式不满足条件,即ture!=null,所以if大括号里面的程序体不会执行。
      

  14.   

    当你为 name 为 null 了, 程序就抛异常, 抛异常程序终止了 啊。, 
    把name 防到后面就算 name 是 null, 程序也不会终止啊。 
      

  15.   

    首先你的那种写法是错误的,不能够完成你Boolean和String的比较 !
      

  16.   

    这是增强程序强壮度的写法,相当于
    if("abc".equals(userName))

    if(userName.equals("abc"))
    类似,如果userName则可能出现NullPointException,但是把值取前就避免了这种情况发生,少写个
    if(userName==null)
    和乐而不为
      

  17.   

    受不了跟帖的几位,异常异常的说得煞有介事,你们测试过么?1. 如果name是非boolean类型,则编译出错,因为==运算类型不匹配。
    2. 如果name是boolean却在打印前被赋予了null值,则编译出错,因为boolean类型不能为null。无论如何编译都通不过,何来运行时异常?基本数据类型何来null值?boolean(其实是int)也能抛空指错真是活见鬼了,它能指谁?
      

  18.   

    Boolean name = null;
    if(name==true){
      。
    }
    引用老紫竹的代码试编译了一下,这样的确不能通过编译..33楼,谢谢提醒
      

  19.   

    楼主 有点走火入魔了,if(true==name);
    if(name==true); 没有区别 唯一一点区别是,当你写程序时,
    如果不小心吧f(name==true); 写成f(name=true); 你就很难排查出错误,
    但是,如果把if(true==name);写成if(true=name);,编译器能够自我排查出错误
      

  20.   

    name不一定是boolean,它可以是boolean的包装类Boolean。
      

  21.   

    为了完成工作,效率越高越好。为了提高自己的水平,多了解些没什么坏处。
    这样的问题一般是面试的时候会被问到的。就像你说的,脑子被灌水了,或者出题的人想要显示他比你高明多少。
    上面说的很清楚,把变量放到后面,写代码的时候可以避免一些BUG的产生。比如把判断语句写成附值语句等。
      

  22.   

    没什么区别,用if(true==name); 可以避免你把"=="写成"=" 
      

  23.   

    没区别,如果一个用== 一个用用.equals()就有区别了,哈哈
      

  24.   

    Boolean name = null;
    if(true==name);
    if(name==true); 这两种写法没有区别。如果name==null的时候都会抛出空指针异常。
    正确的写法是if(name).
    name ==null的情况,在外层判断。
    在实际程序当中,虽然name 为Boolean型的,但为空的可能性不太大,因为其包装的是boolean型的变量,这个变量应该不是真就是假,所以基本上不会是null--所以在外层判断这个动作也可以省略了--只有极特殊的情况下,name的值会被别的程序段改写的情况下,才能需要对name进行非空判断。
      

  25.   


    boolean 是基本数据类型,不存在什么 null 值的问题
      

  26.   

    这个问题:其实只是一个个人的书写习惯而已,不知道大家有没有自己试着运行一下,
    Boolean b = null;
    if (true == b) {
    //代码不会执行到这里,会抛空.
    }
    if (b == true) {
    //代码不会执行到这里,会抛空.
    }
    if (b) {
    //代码不会执行到这里,会抛空.
    }
    //以上因为b是一个空对象,所以不能对它操作
    boolean c;
    //c是一个基本类型,不会为空,但要进行初始化才可用,
    if (c == b) {
    //这里编译不通过
    }
    c = false;
    if (c) {
    //这样才可以通过编译
    }
      

  27.   

    if(true/false?) name 是什么东西
      

  28.   

    这两个区别不大,但是if(true=name) if(name=true) 就有区别了,想想你在做程序时不小心少写一个等号,那么if(true=name)的写法编译就不通过,能让你更早更容易的找到问题,而if(name=true)得写法编译通过,但是运行时就会出错,而且问题很难找,所以养成习惯写if(true==name)吧
      

  29.   

    其实区别就是怕你把==写成=赋值  如果只是一个if(name==true)和true == name是没有区别的
    因为你写成=编译通不过 
      

  30.   

    我的测试结果:if(name==true),if(name),if(true==name)都会报:NullPointerException,何解? Boolean name=null;
    // if(name==true){
    // if(name){
    if(true==name){
    System.out.println("hhhhh");
    }
      

  31.   

    有不同
            使用 true==name 的好处是 当你漏写一个=号的时候,编译器会提示有错误。
      

  32.   

    如果你不小心把if(name == true){...}写成if(name = true)编译时时不会不会报错的,但会影响结果了,也不好查;如果把if(true == name){...}不小心写成if(true = name){...}编译就通不过。一下子就查出来了。
      

  33.   


    楼上还是有错。
    Boolean name=null;
    System.out.println(true==name);还是会抛出NullPointerException。所以true==name与name==true没有区别。
      

  34.   

    这里发言,表示您接受了CSDN社区的用户行为准则。 
    请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。 
    转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。 
      

  35.   

    #12楼正解。。把true放前面,增加程序的健壮性。。
      

  36.   

    这个我以前也学校也是把常量放在前面,
    比如if(true == name)
    但是后来在公司,要求把变量放前面,我只得服从现在我也有些迷惑,印象中原因就是11#说的那样。
      

  37.   

    如果程序正常运行这两名没什么区别,因为:(1) name 不为 boolean 也不是 Boolean 类型:
        无论运行这两名中的哪一句都会在编译时出现错误“不可比较的类型”;(2) name 为 boolean 类型 并赋值为 null :
         无论运行这两名中的哪一句都会在编译时出现错误“不兼容的类型”;(3) name 为 Boolean 类型并赋值为 null :
         在编译时都不会出现错误和异常,但是在运行时都会出现NullPointerException空指针异常;