java中遇到一个问题 boolean b; while(b = true) 这是一个正确的示例,请高手帮忙讲解下为什么条件能这么写

感谢大家的回答,看了很多,大概有两种解释,
一种是赋值成功了,所以为真,但是本人尝试了,各种数据类型,除了布尔类型以外都失败,所以应该不是这样.
另外一种非常又道理,程序在执行的时候先执行了赋值然后又读取了b的值以赋值之后变量b的值为准进行条件判断,本人认为这是正确的说法.
那么本人想继续请教,这种写法是一直都有吗?
而且在java中赋值语句本身也是一个表达式吗?

boolean b; while(b = true)

JAVA不推荐这么写的

这个里面有2步操作
1) b = true;将b赋值为true
2) while(b),最终判断是根据boolean类型的b来判断的。

所以这个循环等同于死循环,while(true)追问

这个是一直都能用的,还是后来的JDK版本加进去的?
是不是只有boolean类型可以这么用其他的就不行了呢.

追答

一直都可以,但是开发中很少这样写

只有boolean类型才可以的,JAVA不同于C/C++,BOOLEAN类型只接受true和false

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-19
boolean 有默认值 true追问

如果我写 boolean b = false;
while(b = true)
也是对的...

追答

你是想问while为什么这么些, 还是什么?

追问

boolean b = true;
while(b)

while(b == true)
都是常见的方式
我是想知道 为什么while之后的条件里可以写一个赋值语句而没有写一个值为boolean类型的表达式?

追答

你是说这个呀。
可以这么些, 相当于赋完值之后继续用在判断,先赋后用。
等于while(b)

第2个回答  2011-04-19
这个要分2步来处理,1,将true赋值给b,2,将b作为while的条件追问

不是说循环条件应该是一个boolean类型的值吗
针对这个问题 b = true 本身应该是一个赋值语句呀
他本身并不是一个表达式呀
赋值语句是有值的吗???
还有这种分两步的机制是单独设立的吗?
还是说赋值语句本身也是一个表达式???
我记得不是这样的吧...
而且这个东西是jdk1.5以后才加入的吗? 我怎么记得以前不能这么用呢?

追答

刚才的回答错误,正确答案是赋值语句恒为真

第3个回答  2011-04-19
b = true 给b赋值 赋值成功:true
while(true)追问

赋值成功就变成true了?
那为什么我写
int i;
while(i = 5)
就报语法错误呢?
这个赋值也成功了呀...

追答

这样说吧

正确语法 while(blooean) 所以说while(int)明显是错误的

while(b = true) 的时候给b赋值,b就是true,while(里面就是true)
就是说给b赋什么值,while里面就是什么

第4个回答  2011-04-19
简单这样理解,运算符是有顺序的,你这个代码先执行赋值计算,得到b=true;
然后while(条件),这里括号内只要是boolean的值就可以执行成功
相似回答