A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋红旺 黑马帝   /  2011-9-17 08:51  /  3763 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String str = "abc";
if(str==null) 和 if(null==str) 这两个有什么区别啊??

6 个回复

倒序浏览
黑马网友  发表于 2011-9-17 08:53:21
沙发

回复 楼主 的帖子

如果是用==的话,这两个基本上没有什么区别。
回复 使用道具 举报
如果在运行程序时str为空了
那么str==null 就会引发空指针异常
而(null==str)就不会引发空指针异常
在编译阶段如果笔下误写成了str=null不会提示编译错误
而null==str会提示错误
一般建议使用null==str
如果判断字符串时最好不要用==,要用equals()
在判断内存中的字节码时要用 ==
[ 本帖最后由 丁朋伟 于 2011-09-17  08:57 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
admin + 2 很详细!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-17 10:30:43
板凳

回复 藤椅 的帖子

谢谢分享,学习了!
回复 使用道具 举报
黑马网友  发表于 2011-9-20 23:02:21
报纸
str== null ,如果str为null,就会发生NullPointException异常,而null==str可以防止程序发生NullPointException,所以在程序中推荐使用null==str
回复 使用道具 举报
黑马网友  发表于 2011-9-22 16:05:31
地板
请勿结贴,请做测试,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放在判断前面避免空指针,这就是所谓的短路

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-23 17:40:00
7#
根据张磊同学的代码测试 没有发现区别~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马