现在我遇到这么一个问题!
                  pidStr是String类型!
System.out.println(pidStr);
System.out.println(pidStr == null);
System.out.println(pidStr.equals(null));
System.out.println(pidStr.equals(""));
System.out.println(pidStr == "");这是输出后的结果!null
false
false
false
false这个应该怎么判断!打出来的是null,可是判断怎么都是false!这是为什么?

解决方案 »

  1.   

    因为pidStr为空,所以它没有指向任何的字符串常量,它仅仅只有它本身的内存地址
    pidStr == null  内存地址的比较,肯定是false
    pidStr.equals(null) pidStr没有指向任何字符串常量,肯定也是false
    pidStr.equals("") 同上
    pidStr == "" 同第一个
      

  2.   

    System.out.print(pidStr.equalsIgnoreCase("null"));
      

  3.   

    我觉得这应该分两种情况来考虑
    如果是String s = new String(),这个时候s是为空的,你只需要判断s.isEmpty()就好了
    如果是String s = null,这个时候是可以直接判断pidStr == null的
      

  4.   

    对于你的第二个结果,不可能!!!如果pidStr输出为null
    那么System.out.println(pidStr == null);一定是true对于一楼的:pidStr == null  内存地址的比较,肯定是false 
    这个也是错的,内存地址的比较,不一定就是false