见老程序员写if判断字符串比较的时候喜欢null.equals(str变量) 或者是 "某具体字符串".equals(str变量)。请问这样写跟   str变量.equals("某具体字符串")相比有什么好处吗 ?

解决方案 »

  1.   

    你确定有null.equals(str变量)这种写法?一般都是 常量.equals(变量), 因为变量.equals(常量)当变量为null的时候会有NullPointerException
      

  2.   

    null.equals(str变量)没有这种写法,编译都不过的."某具体字符串".equals(str变量)这种写法是保证了当str变量为null的时候,程序不会抛出空指针异常str变量.equals("某具体字符串")这种写法当str变量为null时,程序就会抛出空指针异常而终止运行
      

  3.   


           str变量.equals("某具体字符串")    --------因为str变量未知,可能为null,当str字符串的值为null时,会报NullPointerException的错误而       "某具体字符串".equals(str变量)。------- "某具体字符串"是已知的 避免了上面的错误。
      

  4.   

    见老程序员写if判断字符串比较的时候喜欢null.equals(str变量)
    请问你是从哪里见的,自己想象的吧
      

  5.   

    刚查了一下。验证了。
    "".equals(str变量)这种写法可以避免NullPointerException异常,若str变量为null,str变量.equals("")这种写法就会抛出NullPointerException异常。
      

  6.   

    //这样子写吧 ,不为空 ,同时不为空串
    if (null != str && !"".equals(str)){}null怎么可能调用equals方法 ?
      

  7.   

    我们公司人因为写 变量.equals(常量) 已经被我骂过好几次了,习惯太差!
      

  8.   

    null.equals(str变量)没有这种写法,编译都不过的.
      

  9.   

    马虎了,   9L是我想表达的意思 。谢谢3L和其他大大给出的解释 ,受教了 。对与null!=str 这种写法的好处大家能否再给我讲解下 ,谢谢大家了 。
      

  10.   

    一般是常量.equals("变量").这样为了防止空指针异常啊。
      

  11.   

    这个主要是对C的吧,比如:int i4 = 9;if(i4 != 0){
    //...
    }如果,你要忘写"!"很难查出错误在哪。