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

В одном примере из http://leepoint.net/notes-java/data/ выражения / priority.html

Следующее выражение

1 + 2 - 3 * 4 / 5

оценивается как

1 + 2 - 3 * 4 / 5
    = (1 + 2) - ((3 * 4) / 5)
    = 3 - (12/5)
    = 3 - 2 The result of the integer division, 12/5, is 2 .
    = 1

Затем я увидел другой пример из http://www.roseindia.net/java/master-java/operator-precedence.shtml

Следующее выражение

4 + 5 * 6 / 3

оценивается как

4 + (5 * (6 / 3))

Я немного сбит с толку, как решается, что будет вычислено первым, когда задействованы * и /. В приведенных выше примерах оба варианта кажутся разными.

Первый пример оценивает 3 * 5/5 как ((3 * 4) / 5) Тогда как второй пример оценивает 5 * 6/3 как (5 * (6/3))

Я знаю, что * и / имеют приоритет над + и -, но как насчет того, когда выражение включает и * и /. А также почему два приведенных выше примера демонстрируют разные подходы? Один из них неправ?

Редактировать

public class ZiggyTest {  

    public static void main(String[] args) {  
            System.out.println(4 + (5 * (6 / 3)));
            System.out.println(4 + ((5 * 6) / 3));

            System.out.println(1 + 2 - (3 * (4 / 5)));  
            System.out.println(1 + 2 - ((3 * 4) / 5));  
    }  
 } 

Вышеупомянутая программа производит вывод

14
14
3
1

Почему два последних вывода не совпадают, если первый дал одинаковый вывод.

5
задан Dave Newton 13 November 2011 в 14:38
поделиться