2014-07-20 5 views
0

У меня есть эта строка кода из учебниказначения Asigning в 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.

Вопрос есть. Операция присвоения имеет (по крайней мере, на мгновение) то же значение, что и справа от «=».

+2

'линия = bufferedReader.readLine' не является значением, это задание. Случается, что вызывается метод readLine, возвращаемое значение присваивается 'line', а после этого результат (строка) проверяется как не равный нулю. (И немного offtopic: я не думаю, что этот вопрос заслуживает downvotes, это не сумасшедший вопрос, чтобы попросить какое-то объяснение) –

+1

«Это может быть какой-то глупый вопрос, который получит отрицательные голоса» задайте свой вопрос уже! Мы скажем вам, если это глупо. И, пожалуйста, не используйте «Большое спасибо». (См. Http://stackoverflow.com/help/behavior) –

ответ

3

Это пример assignment conversion. Результатом присваивания является значение присвоения.

int a; 
int b = a = 0; 

От JLS-5,2,

преобразования Назначение происходит тогда, когда значение выражения присваивается (§15.26) переменной: тип выражения должен быть преобразован в тип переменная.

+0

Большое спасибо. Я не визуализировал как назначение цепочки – mdev

+0

Извините, что забыл принять ответ. – mdev

2

В вашем примере:

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

line присваивается bufferedReader.readLine(), а затем проверяется, чтобы увидеть, если она равна нулю.

В вашем втором примере:

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

б присваивается а (который "Not null"), а затем печататься, поэтому вы видите "Not null" как выход.

1

Оператор присваивания (=) возвращает присвоенное значение. В строке из вашего учебника сначала оценивается

bufferedReader.readLine()

Результат равен null, если больше нет строк, которые нужно прочитать. null! = null принимает значение false, заставляя цикл while выйти, когда больше нет ввода.

Аналогично

b = a

присваивает значение "Not NULL" б, и возвращает "Не Нуль"

1

Он производит тот же вывод, как:

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

Перед испытанием в цикл while, строка считывается из буферизованного считывателя и назначается переменной line. Затем значение line проверяется на значение null.
Это форма syntactic sugar, которая используется, чтобы сделать код короче или проще для чтения.

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 

} 

}

 Смежные вопросы

  • Нет связанных вопросов^_^