黑马程序员技术交流社区

标题: 这个代码有什么问题,求大神解释 [打印本页]

作者: 徐龙飞    时间: 2013-7-30 22:21
标题: 这个代码有什么问题,求大神解释
本帖最后由 杨兴庭 于 2013-7-31 23:16 编辑

今天碰到一面试题:int x=1;return x==1?true:false;看了半天没看出有什么不妥,百度了下说是返回值不对,结果还是不明白。哪位大神能给解释下,小弟不胜感激呀!


作者: yangchao8907    时间: 2013-7-30 22:36
没问题,结果是true,你可以自己写写代码,验证一下。
  1. <p>public class Test2 {
  2. public static void main(String[] args) {
  3.   
  4.   System.out.println(getResult(1));</p><p> }</p><p> public static boolean getResult(int x){
  5.    return x==1?true:false;
  6. }
  7. }
  8. </p><p> </p>
复制代码

作者: 肖博文    时间: 2013-7-30 22:52
本帖最后由 肖博文 于 2013-7-30 22:55 编辑


public class Demo{

public static boolean demo(){
  int x = 1;
  
  /*
   * 代码本身没有问题。但在开发中我们应该对代码进行优化。
   * 个人认为面试考的是是否有这方面的意识,并不仅仅是代码的正确性。
   * 优化如下:
   *  (1)== 本身就是个比较运算符,其结果是boolean类型。
   *  (2)而程序中要返回的也是boolean类型,所以不必再使用三元运算符了
   *  (3)优化后的代码 return x == 1 ;
   * */
  return x == 1 ? true : false;
}
public static void main(String[] args){
  boolean flag = demo();
  System.out.println(flag);
}
}

1.JPG (30.75 KB, 下载次数: 0)

1.JPG

作者: 黑马李昂    时间: 2013-7-30 23:04
解释的很好必须顶一下楼上{:soso_e100:}
作者: 逆袭的风    时间: 2013-7-30 23:10
x==1本来就是boolean型,直接return x==1即可
作者: 黑马王晓明    时间: 2013-8-1 18:19
x==1 结果为 true 然后返回true
如果x!=1 结果为false 然后返回false
因为x==1的结果就是boolean布尔类型 前面跟return 返回 所以没有必要再让它选 true 还是 false 了
但是那样写的话也不能说错




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