黑马程序员技术交流社区

标题: if条件表达式能不能为赋值语句 [打印本页]

作者: 王潇男    时间: 2013-6-11 16:42
标题: if条件表达式能不能为赋值语句
本帖最后由 王潇男 于 2013-6-12 18:16 编辑
  1. //代码1
复制代码
  1. //代码2
复制代码
代码1
    boolean t = true;
    if(t = false)
          System.out.print("a");
   System.out.print("b");
输出结果为b

代码2
    boolean f = false;
    if(f = true)
          System.out.print("a");
   System.out.print("b");
输出结果为ab


条件表达式为赋值语句也行?如上代码变量被赋值成什么结果就为什么?求解释...
作者: 黑马王瑞    时间: 2013-6-11 17:06
这样写代码没有任何意义,可读性很差.
作者: 谢辉林    时间: 2013-6-11 17:11
本帖最后由 谢辉林 于 2013-6-11 17:13 编辑

这里所表达的逻辑条件并不是“f或t的内容是否等于false或true”,而是向变量f或t中送入数据false或true。
作者: 张歆明    时间: 2013-6-11 17:57
可以
boolean m = true;
        if(m = false) {
           System.out.println("true");
}
但是  你要保证你的单纯的赋值表达式最后被赋值变量的值是boolean类型的
否则编译器报错
作者: 紫衣侯    时间: 2013-6-11 18:54
if条件里最终结果只要是boolean值就行,含有任何运算都行。  上面两个代码if的条件运算最后都是boolean t,代码1,false赋给了t,所以不进if条件,代码2,正好相反。
作者: shiweiCao    时间: 2013-6-11 22:12
如果是C++或C
if(i = 5){
     printf("a\n");
}
else {;}
运行后执行if后面的语句 C++中非0就是真 Java里不允许if语句中是非boolean类型的变量

java中的话,if为判断结构语句,判断就是是与非.
就只有布尔型可以这样的.也就是说,赋值时, 结果必须为一个布尔的返回值.
if(b=false){
}
将b赋值为false,
然后这个表达式成了
if (false){
}
这个可以理解了吧。
if 后面的表达式是boolean型的。我想应该是明白了.

赋值表达式也有返回值。 b=false 这个表达式的值就是false。
如果不是boolean,这个显然编译不通过。
作者: shiweiCao    时间: 2013-6-11 22:14
补充点,这个问题,没什么太大的意义,知道有明白了就可以了.  不必深究
作者: 曹宇    时间: 2013-6-12 02:19
第一个 if 中 t被赋值为假  就相当于 if(false) 所以输出b

第二个 t被赋值为 真   就相当于if(true)  输出为 ab

if中接收 任何能产生boolean型的表达式  无论你表达式在复杂 只要你的结果只有1个 且为 boolean类型,那么编译都会通过。





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