一个关于字符空和null值的问题!先谢谢各位高手

lewisxoyo 2009-10-17 04:07:39
现在我遇到这么一个问题!
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!这是为什么?
...全文
124 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
imasmallbird 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 lewisxoyo 的回复:]
现在我遇到这么一个问题!
                  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!这是为什么?
[/Quote]
对于你的第二个结果,不可能!!!

如果pidStr输出为null
那么System.out.println(pidStr == null);一定是true

对于一楼的:pidStr == null 内存地址的比较,肯定是false
这个也是错的,内存地址的比较,不一定就是false
lewisxoyo 2009-10-17
  • 打赏
  • 举报
回复
谢谢,谢谢两位帮我解决问题!问题已解决。。
virginkj 2009-10-17
  • 打赏
  • 举报
回复
我觉得这应该分两种情况来考虑
如果是String s = new String(),这个时候s是为空的,你只需要判断s.isEmpty()就好了
如果是String s = null,这个时候是可以直接判断pidStr == null的
lewisxoyo 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 virginkj 的回复:]
因为pidStr为空,所以它没有指向任何的字符串常量,它仅仅只有它本身的内存地址
pidStr == null  内存地址的比较,肯定是false
pidStr.equals(null) pidStr没有指向任何字符串常量,肯定也是false
pidStr.equals("") 同上
pidStr == "" 同第一个
[/Quote]

谢谢您的答案,那如果比较字符串是否为空的话,应该像2楼的那种比较吗?
sunjinyujeep 2009-10-17
  • 打赏
  • 举报
回复
System.out.print(pidStr.equalsIgnoreCase("null"));
virginkj 2009-10-17
  • 打赏
  • 举报
回复
因为pidStr为空,所以它没有指向任何的字符串常量,它仅仅只有它本身的内存地址
pidStr == null 内存地址的比较,肯定是false
pidStr.equals(null) pidStr没有指向任何字符串常量,肯定也是false
pidStr.equals("") 同上
pidStr == "" 同第一个

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧