[英]Assigning values in JAVA
我从教程中有这行代码
while((line = bufferedReader.readLine()) != null)
它工作得很好,但我不明白这个概念。 Java 是否为操作本身分配了一个值line = bufferedReader.readLine()
? 之后看起来像:
line
和line = bufferedReader.readLine()
具有相同的值?。
试图得到它我测试
String a = "Not null";
String b;
System.out.println( (b = a) );
输出是: Not null
。
问题是。 赋值操作本身具有(至少在瞬间)与“=”右侧的任何值相同的值。
这是赋值转换的一个例子。 赋值的结果就是赋值的值。
int a;
int b = a = 0;
从 jls-5.2,
将表达式的值分配给变量(第 15.26 节)时会发生赋值转换:表达式的类型必须转换为变量的类型。
在您的示例中:
while((line = bufferedReader.readLine()) != null)
line
分配给bufferedReader.readLine()
然后检查它是否为空。
在你的第二个例子中:
String a = "Not null";
String b;
System.out.println((b = a));
b 被分配给 a (它是"Not null"
)然后打印,这就是为什么你看到"Not null"
作为输出。
赋值运算符 (=) 返回分配的值。 您的教程中的行首先评估
bufferedReader.readLine()
如果没有更多行可供读取,则结果为空。 null != null 计算结果为 false,导致 while 循环在没有更多输入时退出。
相似地
b = a
将值“Not Null”赋给 b,并返回“Not Null”
它产生与以下相同的输出:
line = bufferedReader.readLine();
while(line != null) {
//do stuff in the loop
line = bufferedReader.readLine();
}
在 while 循环中的测试之前,从缓冲读取器读取line
并将其分配给变量line
。 然后根据 null 检查line
值。
这是一种语法糖,用于使代码更短或更易于阅读。
在java中总是从右到左分配并返回最左边的变量。 这是一个例子
public class Test {
static String a="this is a";
static String b= "this is b";
static String c="this is c";
public static void main(String[] args) {
//Simple assignments
//Output=this is c
System.out.println(a=b=c);//assign c value to b and then assign b value to a and return a
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.