黑马程序员技术交流社区

标题: null==str 和str==null区别 [打印本页]

作者: 宋红旺    时间: 2011-9-17 08:51
标题: null==str 和str==null区别
String str = "abc";
if(str==null) 和 if(null==str) 这两个有什么区别啊??
作者: 匿名    时间: 2011-9-17 08:53
标题: 回复 楼主 的帖子
如果是用==的话,这两个基本上没有什么区别。
作者: 丁朋伟    时间: 2011-9-17 08:54
如果在运行程序时str为空了
那么str==null 就会引发空指针异常
而(null==str)就不会引发空指针异常
在编译阶段如果笔下误写成了str=null不会提示编译错误
而null==str会提示错误
一般建议使用null==str
如果判断字符串时最好不要用==,要用equals()
在判断内存中的字节码时要用 ==
[ 本帖最后由 丁朋伟 于 2011-09-17  08:57 编辑 ]
作者: 匿名    时间: 2011-9-17 10:30
标题: 回复 藤椅 的帖子
谢谢分享,学习了!
作者: 匿名    时间: 2011-9-20 23:02
str== null ,如果str为null,就会发生NullPointException异常,而null==str可以防止程序发生NullPointException,所以在程序中推荐使用null==str
作者: 匿名    时间: 2011-9-22 16:05
请勿结贴,请做测试,str==null,null==str是没有区别的
public static void main(String[] args) {
       
                String str=null;
                if(str==null){
                        System.out.println("str is null");
                }else{
                        System.out.println("str is not null");
                }
        }

我们讲的避免空指针一场,是用equals方法是,须将if(str!=null&&str.equals(str2))
须将str!=null放在判断前面避免空指针,这就是所谓的短路
作者: 匿名    时间: 2011-9-23 17:40
根据张磊同学的代码测试 没有发现区别~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2