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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

王潇男

中级黑马

  • 黑马币:0

  • 帖子:31

  • 精华:0

© 王潇男 中级黑马   /  2013-6-11 16:42  /  4363 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王潇男 于 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


条件表达式为赋值语句也行?如上代码变量被赋值成什么结果就为什么?求解释...

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

7 个回复

倒序浏览
这样写代码没有任何意义,可读性很差.
回复 使用道具 举报
本帖最后由 谢辉林 于 2013-6-11 17:13 编辑

这里所表达的逻辑条件并不是“f或t的内容是否等于false或true”,而是向变量f或t中送入数据false或true。
回复 使用道具 举报
可以
boolean m = true;
        if(m = false) {
           System.out.println("true");
}
但是  你要保证你的单纯的赋值表达式最后被赋值变量的值是boolean类型的
否则编译器报错

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
if条件里最终结果只要是boolean值就行,含有任何运算都行。  上面两个代码if的条件运算最后都是boolean t,代码1,false赋给了t,所以不进if条件,代码2,正好相反。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
如果是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,这个显然编译不通过。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
补充点,这个问题,没什么太大的意义,知道有明白了就可以了.  不必深究
回复 使用道具 举报
曹宇 中级黑马 2013-6-12 02:19:23
8#
第一个 if 中 t被赋值为假  就相当于 if(false) 所以输出b

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

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

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马