在JAVA中分配值

时间:2014-07-20 18:49:25

标签: java variables

我从教程中获得了这行代码

while((line = bufferedReader.readLine()) != null)

它工作正常,但我没有得到这个概念。 Java是否为操作本身line = bufferedReader.readLine()设置了一个值? 之后看起来像:

lineline = bufferedReader.readLine()具有相同的值?。

试图让我测试

  String a = "Not null";
  String b;
  System.out.println( (b = a) );

输出为:Not null

问题是。 分配自己的操作(至少暂时)与“=”右边的任何值相同?

5 个答案:

答案 0 :(得分:3)

这是assignment conversion的一个例子。赋值的结果是赋值的值。

int a;
int b = a = 0;

来自jls-5.2,

  

当表达式的值被赋值(第15.26节)给变量时,就会发生赋值转换:必须将表达式的类型转换为变量的类型。

答案 1 :(得分:2)

在你的例子中:

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"作为输出。

答案 2 :(得分:1)

赋值运算符(=)返回已分配的值。您的教程中的行首先评估

bufferedReader.readLine()

如果没有剩余的行要读取,则结果为null。 null!= null计算结果为false,导致while循环在没有更多输入时退出。

同样

b = a

将值“Not Null”赋给b,并返回“Not Null”

答案 3 :(得分:1)

它产生的输出与:

相同
line = bufferedReader.readLine();
while(line != null) {
    //do stuff in the loop
    line = bufferedReader.readLine();
}

在while循环中进行测试之前,从缓冲读取器读取一行并将其分配给变量line。然后检查line的值是否为空 这是syntactic sugar的一种形式,用于使代码更短或更容易阅读。

答案 4 :(得分:0)

在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

}   

}