黑马程序员技术交流社区

标题: 这些有什么不妥之处? [打印本页]

作者: 徐梦侠    时间: 2012-10-12 22:40
标题: 这些有什么不妥之处?
本帖最后由 徐梦侠 于 2012-10-13 00:07 编辑

在面试题库里面看见一道题,不是很明白请教大家
下面的代码有什么不妥之处?
1.   if(username.equals(“zxx”){}
2. int  x = 1;
return x==1?true:false;

作者: yangfengxiao    时间: 2012-10-12 23:12
if(username.equals(“zxx”){}中username 可能为null,会出现空指针异常。


2、2. int  x = 1;
return x==1?true:false;
     x==1的值为boolean行,你那句return语句我感觉没有意义啊,你感觉呢?
作者: 马州州    时间: 2012-10-12 23:14
本帖最后由 马州州 于 2012-10-12 23:17 编辑

这两个我乍一看有点蒙了,不过仔细看看就会发现有些不妥的地方
1.   if(username.equals(“zxx”){}
这个事字符串的比较,用==就可以,如果用equals比较,如果username为null的话,就会出问题
还有就是在比较的时候,要把固定不变的放在前面,用变量代替的放在后面
2. int  x = 1;
return x==1?true:false;
这里既然是返回值,那么x ==1返回的就是true或者false,后面是多此一举
作者: 徐梦侠    时间: 2012-10-12 23:17
yangfengxiao 发表于 2012-10-12 23:12
if(username.equals(“zxx”){}中username 可能为null,会出现空指针异常。

第一个没问题,只是觉得第二个虽然多余,但也不会报错啊,也不至于不妥吧。
作者: 马州州    时间: 2012-10-12 23:26
徐梦侠 发表于 2012-10-12 23:17
第一个没问题,只是觉得第二个虽然多余,但也不会报错啊,也不至于不妥吧。 ...

第二个是没错,但是在开发的时候这样写就会多一重运算,效率低啊
作者: 徐梦侠    时间: 2012-10-13 00:06
马州州 发表于 2012-10-12 23:26
第二个是没错,但是在开发的时候这样写就会多一重运算,效率低啊

恩,看来应该是这样的
作者: yangfengxiao    时间: 2012-10-13 19:55
徐梦侠 发表于 2012-10-12 23:17
第一个没问题,只是觉得第二个虽然多余,但也不会报错啊,也不至于不妥吧。 ...

我记得毕老师讲过三元运算符可以和if  else 语句互换,你用if   else换一下三元运算符的代码如下:iint x=1;if(x==1){return  true;}else{return false;}这样看起来比三元运算符方便。虽然三元运算符的效率比if else语句高点,但是建议经量少用。这只是我个人观点。
作者: 梁世喜    时间: 2012-10-13 20:11
第一个咋一看,没觉得有错,看了二楼,恍然大悟




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