Дано:
public class Triangle {

        double area;
        int height;
        int length;

        public static void main(String[] args) {
            int x = 0;
            Triangle[] ta = new Triangle[4];
            while (x < 4) {
                ta[x] = new Triangle();
                ta[x].height = (x + 1) * 2;
                ta[x].length = x + 4;
                ta[x].setArea();
                System.out.print("triangle " + x +
                        ", area");
                System.out.println(" = " + ta[x].area);
                x = x + 1;
            }
            int y = x;
            x = 27;
            Triangle t5 = ta[2];
            ta[2].area = 343;
            System.out.print("y = " + y);
            System.out.println(", t5 area = " +
                    t5.area);
        }

        void setArea() {
            area = (height * length) / 2;
        }
    }
Интересуют вот эти две строки:
Triangle t5 = ta[2];
ta[2].area = 343;
Из этого следует, что переменная t5 типа Triangle и переменная ta[2] ссылаются на один и тот же объект Triangle. Программа выполняется сверху вниз, строка с присвоением 343 идёт ниже. Однако при присвоении ta[2].area = 343 автоматически меняется и значение t5, хотя она выше (я проверил через debug). Такое правило работает только в данном случае объектов и ссылок на них? И ещё вопрос. Например, если бы мы имели:
int x,y;
х=6;
x=y;
y=7;
То значение x чему было бы равно? И по-другому:
int x,y;
х=6;
y=x;
y=7;
В данном случае x так и остаётся равным 6, верно?