在编程的时候,我总是喜欢这样比较,
String a="XXX";
String b="YYY";
第一比较是否为空时候 
if(!a.equals("")&&a!=null){
//程序
}
或者
if(a.equals("")||a==null){
//
}
还有比较两个字符串是否为相等时候
if(a.equals(b)&&a==b){
//
}
if(!a.equals(b)||a!=null){}
这样有问题吗 ????
谢谢!

解决方案 »

  1.   

    equals  是值比较,==是比较内存
      

  2.   

    equals  是对象间比较。
      

  3.   

    ""是一个值,是分配了内存的,
    null没有分配内存,值是不存在的关于equal和==的区别,楼上两位说的综合以下
      

  4.   

    String a="XXX";
    String b="YYY";
    类似这样的声明表明已经分配了空间,再用a==null来判断,显得多余
      

  5.   

    ""是空字符串,但是也是有内存空间的,而null是空对象。
    对于字符串,用==和用equals实际上是一样的。完全没有必要得用两次判断。
      

  6.   

    qldd(冷面情人) 你说的好像不对equals是比较内容
      

  7.   

    if(!a.equals("")&&a!=null){
    //程序
    }
    if(a.equals("")||a==null){
    //
    }
    >>>>>>>
    我一般这样写(请注意判断条件的顺序):
    if(str != null && !str.equals("")) {
        //do sth.
    }if(str == null || str.trim().equals("")) {
        //do sth.
    }
    把先后顺序调换的好处是,不会产生NullPointerException,而你那个写法会有这个可能,且对于是否==null的判断完全无意义
      

  8.   

    两颗星就是不一样!
    一般是先判断==null,如果是的话,后面的.equals("")就不会再判断了