Логическое назначение против объявления

#java #boolean #variable-assignment

#java #логическое #переменная-назначение

Вопрос:

Я не понимаю, почему, когда я создаю логические значения, я могу сделать:

 boolean a, b, c = false;
  

и пусть им всем будет присвоено значение false, но позже, когда я захочу изменить значения, я не смогу этого сделать

 a, b, c = true;
  

Кто-нибудь знает, почему это так?

Комментарии:

1. Потому что это синтаксис языка.

2. a, b, c = false это не a = b = c = false ; это «установить c в false, а a и b в любое значение по умолчанию (которое также является false)»

3. Использовать boolean a = false, b = false, c = false;

4. @tobias_k начинается ли присваивание справа налево?

5. boolean a = false, b, c; Как вы думаете, что здесь происходит?

Ответ №1:

 boolean a, b, c = false;
  

Вы объявляете a , b и c здесь, но только присваиваете c . Как в:

 boolean a;
boolean b;
boolean c = false;
  

Если вы хотите назначить каждую из переменных, вы должны сделать это явным:

 boolean a = false, b = false, c = false;
  

(Но в этот момент, вероятно, было бы более удобно разделить его на несколько строк.)

Следовательно, нет смысла иметь

 a, b, c = true;  // invalid
  

Однако вы можете использовать

 a = b = c = true;  // valid
  

чтобы назначить a , b и c все true .

Комментарии:

1. Итак, второе действительно похоже: a; b; c = true; Что бессмысленно?

2. @jhobbie Я полагаю, вы могли бы сказать это. Это просто сводится к тому, что синтаксически недопустимо использовать запятые в таком выражении.