黑马程序员技术交流社区

标题: 请问下边的代码运行后得出的结果是什么?--基础题 [打印本页]

作者: 7℃洋    时间: 2012-11-13 00:34
标题: 请问下边的代码运行后得出的结果是什么?--基础题
public class Foo{  
        public static void main(String args[]) {
                int x = 100;
                int y = 200;
                if (x = y)
                        System.out.println("Not equal");
                else
                        System.out.println("Equal");
        }
}

作者: 廖力    时间: 2012-11-13 02:07
它会编译不过报错
错误信息为:Type mismatch: cannot convert from int to boolean
意思是不能把int类型转成boolean类型

  1. public class Foo{  
  2.         public static void main(String args[]) {
  3.                 int x = 100;
  4.                 int y = 200;
  5.                 if (x = y)//标记1
  6.                         System.out.println("Not equal");
  7.                 else
  8.                         System.out.println("Equal");
  9.         }
  10. }
复制代码
当代码运行到标记1时候:
1.将y的值赋给x
2.判断x,因为x是int类型,不能转成boolean类型所以会报错
作者: 郑丹丹    时间: 2012-11-13 10:05
本帖最后由 dan8612 于 2012-11-13 15:00 编辑

把代码改为:
public class Foo{  
        public static void main(String args[]) {
                int x = 100;
                int y = 200;
                if (x ==y)
                        System.out.println("Not equal");
                else
                        System.out.println("Equal");
        }
}
运行的结果是“Equal”.
作者: 余睿    时间: 2012-11-13 10:17
这里的=是赋值运算符,将y的值赋给x
if()中应该是条件表达式,对运算结果是boolean的表达式进行判断 应该使用比较运算符==  
另外 equal 是等于,输出语句中的内容要换一下。
作者: 黑_礼_服    时间: 2012-11-13 10:40
这题也太。。。{:soso_e110:}
作者: 黑_礼_服    时间: 2012-11-13 10:44
dan8612 发表于 2012-11-13 10:05
把代码改为:
public class Foo{  
        public static void main(String args[]) {

if(x = =y)两等号之间有空格 肯定也报错啊  ;P
作者: 一身顺利    时间: 2012-11-13 11:54
if (x = y){}里面只能boolean类型的,=作为赋值运算符的。
作者: 郑丹丹    时间: 2012-11-13 14:59
黑_礼_服 发表于 2012-11-13 10:44
if(x = =y)两等号之间有空格 肯定也报错啊

这是格式问题,与我写的无关。




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