这个代码user==null与null==user有区别吗? 没有区别采用后面一种做法的人,一般都是c/c++程序员转过来做java的,在c/c++中的推荐写法是这样,防止==与=写错。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不仅在==这种情况下,有人这样反着写,对于equals也有人喜欢反着写。例如有人就喜欢把if(name!=null && name.equals("lucy"))写成if("lucy".equals(name))我看了也觉得挺蛋疼。 就算是这样,我感觉,似乎也没什么必要啊,如果if(user==null)写成if(user=null),还能通得过编译吗?C++我不熟,但java中,那样写法,直接报错啊,所以,不存在==写成=的情况,C++中,存在吗? equals 反着写可以避免NullPointException 你说的这种情况,倒是可以理解,为了省几个字节的空间嘛,而判断为空的那种,倒着写,确实有点怪怪的。但我习惯,也是用:if(name!=null && name.equals("lucy"))但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了 如果没有对name做空判断,name.equals("lucy")和"lucy".equals(name)是不一样的==倒是没有什么区别 就算是这样,我感觉,似乎也没什么必要啊,如果if(user==null)写成if(user=null),还能通得过编译吗?C++我不熟,但java中,那样写法,直接报错啊,所以,不存在==写成=的情况,C++中,存在吗?在c/c++中,if(user=null) 是可以通过编译的。 你说的这种情况,倒是可以理解,为了省几个字节的空间嘛,而判断为空的那种,倒着写,确实有点怪怪的。但我习惯,也是用:if(name!=null && name.equals("lucy"))但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了你可以优化代码:if("lucy".equals(name)),减少判断。常量放在前面是很多公司的编码规范,习惯了就好。 没有区别,但我强烈谴责null放前面的写法,对于我等强迫症患者来说,这种写法简直反人类 前后没有区别if(null==对象) 这个是个习惯问题,有些人习惯将null写前面,这样看代码时能很容易看到此处是个非空判断 没有区别。全凭个人爱好一个对象判断时,我喜欢 if(object==null)多个对象判断时,喜欢if(null ==object && obj==null) Java的一些基础语法参考了C/C++语言,并且适当的做出了一些改善,目的是防止一些不必要的程序书写错误对于C/C++语言来讲,由于if(对象=NULL)也是合法的语句,编译器一般不会提示错误。除非特意调整一些警告级别,或者使用lint等静态代码解析工具才有可能会得到一些提示,为此程序员的一时的粗心大意,漏写一个等号的问题让人非常头痛所以,在C/C++世界里,书写if(NULL==对象)是非常常见以及合理的,因为如果漏写一个等号的话,if(NULL=对象)会给出编译错误;如果确实要在if语句里面做赋值操作的话,一般需要给出一些明确的注释予以说明对于Java语言来讲,针对这点已经给出明确的改善不仅if(null=对象)会提示错误if(对象=null)也会提示错误所以,Java程序员很幸福,怎么写都不会出问题而你看到的把常量摆放在前面的写法,应该是有着良好C/C++书写习惯的程序员的产物结论:对于Java语言来讲,推荐使用if(对象==null)这种便于阅读的书写方式,读作“如果对象为空,则”进一步讲:if(name!=null && name.equals("lucy"))完全等价于if("lucy".equals(name))都是正确的代码而if(name.equals("lucy"))在name是null的情况下会抛异常,一般会认为是危险的代码由于一些Java程序员会由于粗心或者不了解语言特性,忘记判断null,所以大多数项目组会明确要求equals必须按照常量放在前面的书写方式,以减少不必要的错误,并且代码更加简洁美观程序员应该彻底理解自己书写的代码,知道自己到底想干什么如果感兴趣,推荐阅读一下《代码大全》或者林锐写的《高质量C/C++编程指南》 你觉得NULL放在前面觉得他压根不算个具体对象,所以想把他放到后面,我明白,就像oracle,你不可能select * from emp where null is name; 你说的这种情况,倒是可以理解,为了省几个字节的空间嘛,而判断为空的那种,倒着写,确实有点怪怪的。但我习惯,也是用:if(name!=null && name.equals("lucy"))但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了你可以优化代码:if("lucy".equals(name)),减少判断。常量放在前面是很多公司的编码规范,习惯了就好。+1,user == null 和 null == user确实没区别但是"lucy".equals(name)和name!=null && name.equals("lucy")有很大区别1 前者利用了equals的交换律,减少了运行的代码量,且有效避免NPE2 不要小看多写了一个 !=null 和 &&当你 if ("lucy".equals(name1) && "nancy".equals(name2) && ... && "tracy".equals(nameN))的时候,多一个!= null 和 &&就蛋疼了当你要把if ("lucy".equals(name1) && "nancy".equals(name2) && ... && "tracy".equals(nameN))这个条件的全部等于,改成只要一个等于,或者全部不等于的时候,就容易手忙脚乱,丢三落四了 在java里没区别。。防止以前c++里面if(变量=null)不报错。 后面那个是有区别的,使用"xxxxx".equals();这样不会出现nullpointException 个人觉得 null == name 比较好,一目了然,还能防错,推荐。不过如果足够细心的,有=、==恐惧症的,完全可以按平常 name == null 方式来写,反正习惯了,就会对那个==多看几眼,防止写成=了。写C++过来的基本上都有这种检查的习惯。 关于数据结构书籍中提到的类无法在javadoc中找到的疑问? 帮忙看一下,为什么没返回数据呢。数据库中是有数据的(jsp) 那位大哥有JAVA制作农历的代码,或算法? 关于枚举的一个问题 现有系统内容、公告、系统均为手动管理! 还是Hashtable 问题. 关于抽象接口,在线等! java里面有没有像vc资源管理器那样可视化设计对话框的开发工具。 scjp考试的sdk1.2和sdk1.4有什么区别? ISO9000内审员在软件行业中有没有用?有多大的用处 关于aptana插件的安装问题 关于用异或的方式,进行数组元素的位置互换,毕老师说可以,我的异或方式打印结果不对请指教
if(name!=null && name.equals("lucy"))
写成
if("lucy".equals(name))我看了也觉得挺蛋疼。
C++我不熟,但java中,那样写法,直接报错啊,所以,不存在==写成=的情况,C++中,存在吗?
equals 反着写可以避免NullPointException
但我习惯,也是用:
if(name!=null && name.equals("lucy"))
但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了
C++我不熟,但java中,那样写法,直接报错啊,所以,不存在==写成=的情况,C++中,存在吗?
在c/c++中,if(user=null) 是可以通过编译的。
但我习惯,也是用:
if(name!=null && name.equals("lucy"))
但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了
你可以优化代码:if("lucy".equals(name)),减少判断。
常量放在前面是很多公司的编码规范,习惯了就好。
if(null==对象) 这个是个习惯问题,有些人习惯将null写前面,这样看代码时能很容易看到此处是个非空判断
一个对象判断时,我喜欢 if(object==null)
多个对象判断时,喜欢if(null ==object && obj==null)
不仅if(null=对象)会提示错误
if(对象=null)也会提示错误
所以,Java程序员很幸福,怎么写都不会出问题
而你看到的把常量摆放在前面的写法,应该是有着良好C/C++书写习惯的程序员的产物结论:
对于Java语言来讲,推荐使用if(对象==null)这种便于阅读的书写方式,读作“如果对象为空,则”进一步讲:
if(name!=null && name.equals("lucy"))完全等价于if("lucy".equals(name))都是正确的代码
而if(name.equals("lucy"))在name是null的情况下会抛异常,一般会认为是危险的代码由于一些Java程序员会由于粗心或者不了解语言特性,忘记判断null,所以大多数项目组会明确要求equals必须按照常量放在前面的书写方式,以减少不必要的错误,并且代码更加简洁美观程序员应该彻底理解自己书写的代码,知道自己到底想干什么
如果感兴趣,推荐阅读一下《代码大全》或者林锐写的《高质量C/C++编程指南》
但我习惯,也是用:
if(name!=null && name.equals("lucy"))
但一般,得到name前,我都是用三目运算,判断为null时,转为""了,就不存在name.equals("lucy")出现空指针异常了
你可以优化代码:if("lucy".equals(name)),减少判断。
常量放在前面是很多公司的编码规范,习惯了就好。+1,user == null 和 null == user确实没区别
但是"lucy".equals(name)和name!=null && name.equals("lucy")有很大区别
1 前者利用了equals的交换律,减少了运行的代码量,且有效避免NPE
2 不要小看多写了一个 !=null 和 &&当你 if ("lucy".equals(name1) && "nancy".equals(name2) && ... && "tracy".equals(nameN))的时候,多一个!= null 和 &&就蛋疼了当你要把if ("lucy".equals(name1) && "nancy".equals(name2) && ... && "tracy".equals(nameN))这个条件的全部等于,改成只要一个等于,或者全部不等于的时候,就容易手忙脚乱,丢三落四了
防止以前c++里面if(变量=null)不报错。
不过如果足够细心的,有=、==恐惧症的,完全可以按平常 name == null 方式来写,反正习惯了,就会对那个==多看几眼,防止写成=了。写C++过来的基本上都有这种检查的习惯。