Java | Приоритет операторов

Если вы будете использовать больше двух переменных, тогда нужно понимать приоритет операторов Java. Под приоритетом операторов подразумевается то, как относится Java-программа к расчету вашей формулы.

Возьмите следующее в качестве примера:

a = 100;
b = 75;
c = 25;        
answer = a - b + c;

Если бы вы выполняли вычисления слева направо, тогда было бы 100 - 75, то есть 25. Затем добавьте третье число, которое равно 25. Всего будет 50.

Однако что, если вы имели в виду не это? Что, если вы хотите сложить второе и третье числа вместе, а затем вычесть сумму из первого числа? Таким образом, 75 + 25, что составляет 100. Затем вычтите это из первого числа, которое равно 100. Теперь сумма будет равна 0.

Чтобы убедиться, что Java делает то, что вы хотите, вы можете использовать круглые скобки, чтоб обозначить приоритет операторов в нашей формуле (все просто, как в математике). Итак, первый расчет будет:

answer = (a - b) + c;

Окно с кодом будет выглядеть следующим образом:

Приоритет скобок в Java

Второй расчет таков:

answer = a - (b + c);

И окно с кодом:

Приоритет скобок в Java

Теперь давайте попробуем умножение и сложение.

Измените математические символы (называемые операторами) на плюс и умножьте:

answer = a + b * c;

Удалите скобки и запустите Java-программу.

Без скобок можно подумать, что Java будет вычисляться слева направо. То есть, сначала добавит первое число ко второму, и получиться 175. Затем умножит сумму на третье число, которое равно 25. Таким образом, ответ будет 4375. Запустите программу. Ответ, который вы на самом деле получите 1975! Так, что происходит?

Причина, по которой Java получила «неправильный» ответ, была из-за приоритета оператора. Java рассматривает некоторые математические символы как более важные, чем другие. Она видит, что умножение имеет приоритет перед сложением, поэтому делает это первым. А затем производит сложение. Итак, Java делает это:

answer = a + (b * c);

Установив круглые скобки, можно заметить, что второе число умножается на третье. Затем результат добавляется к первому числу. Таким образом, 75, умноженное на 25, равно 1875. Добавьте 100, и вы получите 1975.

Если вы хотите наоборот, не забудьте «сказать» о приоритете операторов Java-программе, используя круглые скобки:

answer = (a + b) * c;

Деление аналогично умножению: сначала Java делит, а затем складывает или вычитает. Измените строку answer на следующую:

answer = a + b / c;

Ответ - 103. Теперь добавьте круглые скобки:

answer = (a + b) / c;

На этот раз ответ будет 7.

То есть без скобок Java сначала делит, а затем добавляет 100 к результату - она не решает формулу слева направо.

Весь список приоритетов операторов Java

Высший приоритет
1 ( ) [ ]  
2 ~ !    
3 * / %  
4 + -    
5 >> >>> <<  
6 > >= < <=
7 == !=    
8 &      
9 ^      
10 |      
11 &&      
13 ||      
14 ?:      
15 = op=    
  Низший приоритет

Поэтому, если вы считаете, что Java дает вам неправильный ответ, помните, что приоритет операторов является важным в языке программирования Java.

В следующей статье мы рассмотрим, как в Java сохранить текстовые значения.

Дата обновления: 19.07.2019

  • Текущий 0.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

/Рейтинг: 0.0/5 (0 голос(ов) всего)

Добавить комментарий (без регистрации)