Java 此条件的作用是什么(BufferredReader和InputStreamReader)?

Java 此条件的作用是什么(BufferredReader和InputStreamReader)?,java,bufferedreader,inputstreamreader,Java,Bufferedreader,Inputstreamreader,我目前正在阅读一段代码,发现了一个如下开头的方法: BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; while ((userInput = stdIn.readLine()) != null) { } 有人能给我解释一下情况吗?那a=b!=c在我看来似乎很奇怪。你的眼睛好像在看一对括号: while ( (userInput = stdIn

我目前正在阅读一段代码,发现了一个如下开头的方法:

BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));  

String userInput;

while ((userInput = stdIn.readLine()) != null) {

  }

有人能给我解释一下情况吗?那a=b!=c在我看来似乎很奇怪。

你的眼睛好像在看一对括号:

while ( (userInput = stdIn.readLine() ) != null) {

}
我试图在上面把它说得更清楚

正在为变量
userInput
赋值
stdIn.readLine()
。虽然分配之后,
userInput
不为空,但循环仍在继续


它只是一个用于处理
userInput
更新的单行程序,以及检查
null
括号中的赋值
(userInput=stdIn.readLine())
同时执行两件事:将行赋值给userInput变量,并将自身计算为该值。但如果未读取任何内容,则
readLine()
返回
null
,整个表达式的计算结果为
null


因此,当用户输入中有行时,条件
(userInput=stdIn.readLine())!=null
保持不变,循环继续时
。当用户输入中没有更多行时,条件为false,while循环停止。

=
是赋值运算符,而不是比较运算符

(a=b)!=c
b
的值赋给
a
,然后将其与
c
进行比较

while ((userInput = stdIn.readLine()) != null) { ... }
stdIn.readLine()。这将导致循环读取文件的每一行,直到文件的行数用完为止。

类似于:

inta=0;
int b=0;
而((a=b++)!=10){
系统输出打印项次(a);
};  
这里,我们以
b
的增量指定a,并检查其值是否为10


同样地,
userInput=stdIn.readLine()
意味着我们正在读取一行,将它分配给
userInput
变量,并检查直到它读取
null

啊,是的。谢谢:)