Когда использовать Java пост-инкремент и предварительный инкремент [дубликаты]

На этот вопрос уже есть ответ:

Как работают операторы постинкрементного (i ++) и предварительного увеличения (++ i) в Java? 14 ответов

Я понимаю, что в StackOverflow есть ряд вопросов на эту тему. Но я все еще немного сбит с толку и не уверен, когда использовать операции. Я прохожу старые тесты в процессе подготовки к экзамену. Один из методов возвращает количество классных комнат, которые доступны для инвалидов и доступны. Я написал метод счетчика, но не уверен, должен ли я увеличивать или увеличивать счетчик. Я смущен относительно того, как это работает с оператором возврата в методах. Я до сих пор не понимаю, какое значение метод вернет ниже. Другие вопросы не показывают возвращаемые значения в методах, и поэтому я не совсем понимаю, как это работает. Вот код:

  public int howManyHandi()
{
    int counter= 0;
    for (int i = 0; i < _clsrms.length; i++){
        if (_clsrms[i].handicappedSuitable() && _clsrms[i].isAvailable()){
            ++counter;
        }
    }
    return counter;
}  

Ответы на вопрос(2)

поскольку вы ничего не делаете со значением, возвращаемым++counter.

Единственный раз, когда это имеет значение, это когда вы используете значение, возвращаемое оператором post / pre-increment.

Например, если у тебя былreturn counter++; илиreturn ++counter; оператор, ваш метод будет возвращать другой результат в зависимости от того, какой оператор вы использовали.

 user145499414 февр. 2016 г., 11:48
просто чтобы уточнить, если мы присвоим значение этого метода другой переменной, например, в классе драйвера, и мы хотим напечатать количество доступных классов, это не изменится? Переменной будет присвоено значение счетчика?
 user145499414 февр. 2016 г., 11:35
Но давайте предположим, что мы будем использовать значение, возвращаемое методом где-то еще.
 Eran14 февр. 2016 г., 11:37
@ user1454994 это не имеет значения. И то и другое++counter а такжеcounter++ приращениеcounter. Поскольку ваш метод возвращаетcounter, не имеет значения, какой из двух операторов вы использовали.
 Eran14 февр. 2016 г., 11:51
@ user1454994 если вы имеете в виду что-то вродеint count = something.howManyHandi();, тогда да, не имеет значения, используете ли выcounter++ или++counter вhowManyHandi. С другой стороны, если где-то в вашем коде у вас естьint variable = counter++; илиint variable = ++counter;, значениеvariable будет зависеть от того, какой оператор приращения вы используете.
Решение Вопроса

когда вы хотите использовать увеличенное значение переменной в этом выражении. POST-increment использует исходное значение перед его увеличением.

Всякий раз, когда ваш код встречает PRE-приращение, он увеличивает значение этой переменной в памяти, затем загружает это значение и продолжает читать выражение.

POST-increment делает наоборот, загружает это значение этой переменной в память, затем увеличивает значение и продолжает читать выражение.

Чтобы было понятнее, подумай об этом

int i = counter++;

эквивалентн

int i = counter;
counter = counter + 1;

В ТО ВРЕМЯ КА

int i = ++counter;

эквивалентн

counter = counter + 1;
int i = counter;

EDIT: Мои комментарии StackOverflow не работают, поэтому я просто отредактирую их здесь.

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

sum = 0
counter = 0;
sum = (++counter)+(++counter)+(counter++)

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

sum = 0
counter = 0
//For first ++counter
counter = counter + 1
sum = counter

//For second ++counter
counter = counter + 1
sum = sum + counter

//For first counter++
sum = sum + counter
counter = counter + 1
 user145499414 февр. 2016 г., 11:40
Так вы говорите, что это действительно имеет значение, когда мы присваиваем инкрементную переменную другой переменной?
 user145499414 февр. 2016 г., 11:49
Я надеюсь, что все в порядке, я скопировал это в свои заметки, чтобы помочь мне вспомнить.

Ваш ответ на вопрос