黑马程序员技术交流社区
标题:
赋值问题
[打印本页]
作者:
官文昌
时间:
2012-7-21 19:03
标题:
赋值问题
public class Demo
{
public static void main(String[] args)
{
boolean m = true;
if (m = false)
{
System.out.println("true");
} else
{
System.out.println("false");
}
}
}
求解:m=false是赋值还是比较,我运行出来感觉是比较,但是比较不是应该用==吗???
作者:
王璐
时间:
2012-7-21 19:23
是赋值,条件判断false后执行了else
应用==判断条件,由于==经常误写成=
所以建议以后类似问题这也写:false==m 也就是 值==变量
如果误写成=,编译器报错。
作者:
胡文杰
时间:
2012-7-21 19:37
你只要把boolean m = false if(m=true)看最后输出结果,你就知道是赋值还是比较了!
作者:
孙建飞
时间:
2012-7-21 19:56
是赋值 不是比较
if(m=false) //括号中必须是布尔表达式,而且必须产生结果,而你这里只是给m赋了一个false值
{
。。。。。。。
}
这句是错误的if语句 所以不执行里面的代码 ,而执行else中的代码
所以执行结果是 打印false
作者:
王贵朝
时间:
2012-7-21 21:08
Java中是使用两个==来判断相等性的,=是赋值运算符。所以您是在把booleam的值赋值为false,这段代码的结果将永远是false
boolean m = true;
if (m = false)//这里之所以可以这么赋值是应为m的数据类型是boolean的,如果换做其他的编译就会报错
{
System.out.println("true");
} else
{
System.out.println("false");
}
作者:
封明川
时间:
2012-7-21 21:30
public class Demo
{
public static void main(String[] args)
{
boolean m = true;
if (m = false)
{
System.out.println("true");
} else
{
System.out.println("false");
}
}
}
求解:m=false是赋值还是比较,我运行出来感觉是比较,但是比较不是应该用==吗???
m=false是赋值,这里因为m是布尔类型的,if判断的是布尔型的,所以你赋值也没问题
作者:
朱东方
时间:
2012-7-21 21:35
public class Demo
{
public static void main(String[] args)
{
boolean m = true;
if (m = false)
//一个等号=,是赋值。if(m=false)的意思就是if(false).。所以会执行else后面的语句。如果改成if(m==false),也会执行else语句,因为m!=false。这个你只需要看()括号里面是true还是false
{
System.out.println("true");
} else
{
System.out.println("false");
}
}
}
作者:
张世威
时间:
2012-7-21 23:22
public class Demo
{
public static void main(String[] args)
{
boolean m = true;
if (m = false)
{
System.out.println("true");
} else
{
System.out.println("false");
}
}
}
1 m=false 是赋值,即把内存中false值的地址传递给m,让这个变量m指向false,赋值完后整个语句的值还是m,也就是说
m=false赋值完后返回的结果是m的值(已经被赋为false);
2所以if(m=false){} 相当于 if(false){} 。
假设int m=10; if(m=100){} 就相当于 if(100){},而if语句里面只能判读boolean型,
而boolean类型于其它类型是不能转换的,所以必然出错。
作者:
程潇
时间:
2012-7-21 23:28
=是赋值运算符,所以这里的m=false; 必然是将false赋给m。至于把它放到if语句的条件判断中的值是多少,介绍你一个方法
System.out.println((m=false));
以后碰到类似情况,都可以通过打印语句进行调试。
作者:
段应腾
时间:
2012-7-22 08:47
是赋值、将false赋给了m、所以if判断语句中永远为假、 所以 直接执行else语句 结果为false
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2