2016-02-14 4 views
3

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

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

ответ

5

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

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

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

Для того, чтобы было более понятно, рассмотрим этот

int i = counter++; 

эквивалентно

int i = counter; 
counter = counter + 1; 

ПОСКОЛЬКУ

int i = ++counter; 

эквивалентно

counter = counter + 1; 
int i = counter; 

EDIT: My 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 
+0

Итак, вы говорите, что это действительно действительно имеет значение, когда мы назначаем добавочную переменную другой переменной? – user1454994

+0

Надеюсь, это нормально, я скопировал это в свои заметки, чтобы помочь мне запомнить. – user1454994

3

В вашем примере это не имеет значения, так как вы ничего не делаете со значением возвращенного ++counter.

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

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

+0

Но давайте предположим, что мы будем использовать значение, возвращаемое методом где-то еще. – user1454994

+1

@ user1454994 это не имеет значения. Оба '++ counter' и' counter ++ 'увеличивают' counter'. Поскольку ваш метод возвращает 'counter', не имеет значения, какой из двух используемых вами операторов. – Eran

+0

, чтобы уточнить, если мы присвоим значение этого метода другой переменной, например, в классе драйвера, и мы хотим напечатать количество доступных классов, это не изменит ситуацию? Переменной будет присвоено значение счетчика? – user1454994

Смежные вопросы