昨晚做java面试题,一道原题是这样的 (来自——JAVA最最最~~基本的面试题_慕课手记 http://www.imooc.com/article/13754 )
6. 给出以下代码,请问该程序的运行结果是什么?
class Example{
public static void main(String args[]){
boolean flag=false;
if(flag=true){
System.out.println(“true”);
}
else{
System.out.println(“false”);
}
}
}
A 代码编译失败,if语句错误。
B 打印输出true。
C 打印输出false。
D 无内容输出。
当时认为if语句里面应该是不能赋值的,所以果断选了A。。
然而正确结果是B,即输出true,因为在这里虽然声明flag变量的时候初始化为false,但是在if判断时用 “=” 赋值符号改变为字面量true了。。if(true){}
另:如果if判断用的是“==” 逻辑相等,则很明显比较结果为false,输出 “false”。
提到==,还有一个equals,可以参见以下链接进行理解~