Концепция точки последовательности в Java - PullRequest
10 голосов
/ 15 сентября 2010

Я новичок в Java и имею опыт работы с C. Я изучаю книгу Халида Мухала. На странице 126 он приводит пример как

   int i = 10;

   int k = ++i + --i; // ((++i) + (--i)).

Это явно нарушает концепцию точки последовательности, как в C, что говорит о том, что вы не можете изменить значение переменной более одного раза в одной и той же точке последовательности. Мой вопрос: то же самое правило точки последовательности применяется в Java или нет? Возможно, он взял этот пример просто для объяснения концепции префиксного унарного оператора и его побочного эффекта, но такой пример, который явно нарушает очень фундаментальное правило языка, не ожидается в книге, известной как Халид Мухал. *

Поэтому, пожалуйста, подтвердите это.

Надеюсь, вы, люди, принимаете это в правильном духе.

Спасибо

Mawia

Ответы [ 2 ]

8 голосов
/ 15 сентября 2010

Мой вопрос: применяется ли в Java одно и то же правило точки последовательности?

Нет, в Java нет точек последовательности.Порядок оценки (и т. Д.) Хорошо определен в Java.

Также прочитайте этот ответ.

0 голосов
/ 16 марта 2015

Нет, в Java нет понятия точек последовательности, и порядок их полностью определен. Вообще говоря, выражения оцениваются слева направо. Для формального определения вы можете прочитать JLS, раздел 15.7 о порядке вычисления. См. эту ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...