在 while 条件下赋值
Assigning values in while condition
首先我知道=和==的区别。我想使用 = 隐式地进行无限循环。
所以我的代码如下所示:
boolean flag= true;
while (flag=false){
System.out.println("inside loop");
}
System.out.println("rest");
不幸的是它没有进入循环并打印"rest"。为什么?我读错了吗?
在 while 条件下,我将值 false 分配给标志。所以它循环 while flag=false (这是)。
当我这样做时(从 false 变为 true)它进入无限循环:
boolean flag= true;
while (flag=true){
System.out.println("inside loop");
}
System.out.println("rest");
在我看来,这两个例子都应该进入循环。但只有第一个这样做。请帮助我理解这一点。谢谢
= 和 == 之间的唯一区别是:
- = 是一个赋值运算符,您将值赋给 int、boolean 或任何常量/变量。
- ==是一个运算符,主要用于循环(for、else for、if、while)
对于你的情况,我可能会说你需要在 while 循环中使用 == :
boolean flag=true;
while (flag==false){
System.out.println("inside loop");
}
System.out.println("rest");
使用无限循环也不是很好。你不会出去,它会破坏你的代码。
这是由于赋值运算符的工作方式所致。
在你的循环条件中你说的是
flag = true
returns true
,但在此之前将 true
分配给 flag
这是因为我们可以像这样一次做多项作业:
boolean test = flag = true;
// test == true
本质上 (flag = true)
转换为:
- 将 true 赋值给标志
- return
true
进一步使用
你的 while 循环测试的第一步是
flag=false
紧接着测试它的值,这是错误的。
如果值为 false,则不会进入 while 循环。
while (flag=false)
做了两件事:
- 它将
false
分配给flag
- 计算结果为
while(false)
因为它的计算结果为 while(false)
,它的主体将不会被执行。
同理,
while (flag=true)
做了两件事:
- 它将
true
分配给flag
- 计算结果为
while(true)
由于它的计算结果为 while(true)
,它的主体将被无限执行。
首先我知道=和==的区别。我想使用 = 隐式地进行无限循环。 所以我的代码如下所示:
boolean flag= true;
while (flag=false){
System.out.println("inside loop");
}
System.out.println("rest");
不幸的是它没有进入循环并打印"rest"。为什么?我读错了吗? 在 while 条件下,我将值 false 分配给标志。所以它循环 while flag=false (这是)。
当我这样做时(从 false 变为 true)它进入无限循环:
boolean flag= true;
while (flag=true){
System.out.println("inside loop");
}
System.out.println("rest");
在我看来,这两个例子都应该进入循环。但只有第一个这样做。请帮助我理解这一点。谢谢
= 和 == 之间的唯一区别是:
- = 是一个赋值运算符,您将值赋给 int、boolean 或任何常量/变量。
- ==是一个运算符,主要用于循环(for、else for、if、while)
对于你的情况,我可能会说你需要在 while 循环中使用 == :
boolean flag=true;
while (flag==false){
System.out.println("inside loop");
}
System.out.println("rest");
使用无限循环也不是很好。你不会出去,它会破坏你的代码。
这是由于赋值运算符的工作方式所致。
在你的循环条件中你说的是
flag = true
returns true
,但在此之前将 true
分配给 flag
这是因为我们可以像这样一次做多项作业:
boolean test = flag = true;
// test == true
本质上 (flag = true)
转换为:
- 将 true 赋值给标志
- return
true
进一步使用
你的 while 循环测试的第一步是
flag=false
紧接着测试它的值,这是错误的。
如果值为 false,则不会进入 while 循环。
while (flag=false)
做了两件事:
- 它将
false
分配给flag
- 计算结果为
while(false)
因为它的计算结果为 while(false)
,它的主体将不会被执行。
同理,
while (flag=true)
做了两件事:
- 它将
true
分配给flag
- 计算结果为
while(true)
由于它的计算结果为 while(true)
,它的主体将被无限执行。