public class Test {
public static void main(String[] args) {
// String a="11";
// if(a!=null)
//     {
//       if(a.equals(""))
//        System.out.println("等于null1");
//       else      
//         System.out.println("不等于空");
//     }
//     else
//     {
//      System.out.println("等于null2");
//     }
String a="11";
if(a!=null&&!a.equals(""))
    {
          
        System.out.println("不等于空");
    }
    else
    {
     System.out.println("等于null");
    }
}
}if  javaifjava区别

解决方案 »

  1.   

    2个语句基本没什么区别,可能效率有些区别一般是以下的写法String a = "11";
    if (a != null && !"".equals(a)) {
    System.out.println("不等于空");
    } else {
    System.out.println("等于null");
    }
      

  2.   

    楼主,null和""是不一样的,
    比如声明一个 String str ;
    如果说str是null,那么内存根本没创建字符串对象,并由str引用。
    如果说str是"",那么确实存在一个由str引用的字符串对象,只不过这个字符串的值是""
    ,是一个空串。
    所以第一个例子是正确的,第二个是错误的。但是,第一个中,System.out.println("等于null1");
    System.out.println("等于null2");
    null1和null2这个地方就错了。
      

  3.   

    你这样写本身就有点儿错误,
    第一String a="11";//这行代码已经声明了a这个字符串变量,所以a就不可能为NULL,如果a这个字符串是你由参数传递过来的可以进行a是否为NULL的判断。
    你第二种算法更快。
      

  4.   

    其实一个字符串变量就3重情况:
    String a;1 a=null;
    2 a="";
    3 a="a"//任意内容。楼主的第一个方法能分辨出具体 a 是什么。而第二重情况只判断把1,2看成一种情况。无法具体判断是null还是"".
      

  5.   

    其实 a 无非三种情况,A、a=null;
    B、a="";
    C、a=某某你的第二个代码中的if里面是表示C,else表示B、C
    两种方式差不多,你想问的是什么区别???效率还是什么??