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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐梦侠 中级黑马   /  2012-10-12 22:40  /  2086 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐梦侠 于 2012-10-13 00:07 编辑

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

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 加油

查看全部评分

7 个回复

倒序浏览
if(username.equals(“zxx”){}中username 可能为null,会出现空指针异常。


2、2. int  x = 1;
return x==1?true:false;
     x==1的值为boolean行,你那句return语句我感觉没有意义啊,你感觉呢?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 马州州 于 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,后面是多此一举

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 赞一个!

查看全部评分

回复 使用道具 举报
yangfengxiao 发表于 2012-10-12 23:12
if(username.equals(“zxx”){}中username 可能为null,会出现空指针异常。

第一个没问题,只是觉得第二个虽然多余,但也不会报错啊,也不至于不妥吧。
回复 使用道具 举报
徐梦侠 发表于 2012-10-12 23:17
第一个没问题,只是觉得第二个虽然多余,但也不会报错啊,也不至于不妥吧。 ...

第二个是没错,但是在开发的时候这样写就会多一重运算,效率低啊
回复 使用道具 举报
马州州 发表于 2012-10-12 23:26
第二个是没错,但是在开发的时候这样写就会多一重运算,效率低啊

恩,看来应该是这样的
回复 使用道具 举报
徐梦侠 发表于 2012-10-12 23:17
第一个没问题,只是觉得第二个虽然多余,但也不会报错啊,也不至于不妥吧。 ...

我记得毕老师讲过三元运算符可以和if  else 语句互换,你用if   else换一下三元运算符的代码如下:iint x=1;if(x==1){return  true;}else{return false;}这样看起来比三元运算符方便。虽然三元运算符的效率比if else语句高点,但是建议经量少用。这只是我个人观点。
回复 使用道具 举报
第一个咋一看,没觉得有错,看了二楼,恍然大悟
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马