关于java字符串的 空值 比较的问题

耗子肉 2016-05-26 09:05:25
String字符串比较的时候要用equals,但是为什么如果字符串里面是null的话,就得用String == null而不能用.equals(null)啊?
...全文
244 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
耗子肉 2016-05-26
  • 打赏
  • 举报
回复
引用 3 楼 m2200 的回复:
[quote=引用 2 楼 haozi_rou 的回复:] 这个我是知道的,我只是想知道原理是什么,==是比较的内存地址,但是null的时候是不分配地址的啊。。。
两个类型相同的变量都为null,都不指向任何内存地址的时候,虚拟机会判断出来的,这种情况它会默认他们相等的。[/quote] 有道理有道理 怎么结贴呀?
爱睡觉的阿狸 2016-05-26
  • 打赏
  • 举报
回复
引用 2 楼 haozi_rou 的回复:
这个我是知道的,我只是想知道原理是什么,==是比较的内存地址,但是null的时候是不分配地址的啊。。。
两个类型相同的变量都为null,都不指向任何内存地址的时候,虚拟机会判断出来的,这种情况它会默认他们相等的。
耗子肉 2016-05-26
  • 打赏
  • 举报
回复
引用 1 楼 m2200 的回复:
一个字符串对象要么是null,要么不是null。 当字符串是null的时候,你用他调用String的equals方法,必然会发生NullpointerException异常,而使用==则不会。 空指针(为null的时候)调用对象的方法,都会发生NullpointerException异常 也就是当String a = null; System.out.println(a.equals(null));的时候会发生NullpointerException异常。 而String a = null; System.out.println(a == null);这样则可以正常判断。
这个我是知道的,我只是想知道原理是什么,==是比较的内存地址,但是null的时候是不分配地址的啊。。。
爱睡觉的阿狸 2016-05-26
  • 打赏
  • 举报
回复
一个字符串对象要么是null,要么不是null。 当字符串是null的时候,你用他调用String的equals方法,必然会发生NullpointerException异常,而使用==则不会。 空指针(为null的时候)调用对象的方法,都会发生NullpointerException异常 也就是当String a = null; System.out.println(a.equals(null));的时候会发生NullpointerException异常。 而String a = null; System.out.println(a == null);这样则可以正常判断。

62,628

社区成员

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

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