Присвоение новых значений переменным в Java - PullRequest
0 голосов
/ 31 августа 2018

Я новичок в Java, и у меня есть вопрос о переменных. Вот пример.

int hello = 6;
int goodbye = 7;
int combined = hello + goodbye;

    System.out.println(combined);
    hello = 10;
    System.out.println(combined);

Когда я переназначаю hello и задаю ему значение 10 вместо шести, и я печатаю комбинированный во второй раз, он все равно говорит, что комбинированный равен 13, а не 17 в консоли. Как вы это исправите? Спасибо!

Ответы [ 5 ]

0 голосов
/ 31 августа 2018

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

int hello = 6; // hello has 6
int goodbye = 7; // goodbye has 7
int combined = hello + goodbye; // combined = 6 (value of hello) + 7 (value of goodbye) = 13

System.out.println(combined); //hence this prints value 13 which is assigned to combined
hello = 10; // changing the value of hello to 10.
System.out.println(combined); // since there is no change in combined value you will get 13 itself.

//In order to change the value of combined you need to assign the value again. In this case you need to re-evaluate combined.
combined = hello + goodbye; //Since now value of hello is 10.Expression will be 10 + 7 = 17
System.out.println(combined);//Output will be 17.
0 голосов
/ 31 августа 2018

combined не изменится только потому, что изменилась одна из переменных, определяющих его. Вам нужно будет каждый раз вручную обновлять combined.

В этом простом случае самым простым способом было бы просто написать hello + goodbye снова, как показано в ответе @ lealceldeiro.

Для более сложных фрагментов кода, вместо дублирования одного и того же кода в нескольких местах, было бы лучше обернуть этот код в функцию:

public int doSomeMath(int x, int y) {
    return x + y; //Pretend this is some complicated equation 
}

Затем, когда вам нужно сделать математику несколько раз позже, вы используете функцию:

int hello = 6;
int goodbye = 7;

// Prints 13
System.out.println(doSomeMath(hello, goodbye));

goodbye = 10;

//Prints 17 
System.out.println(doSomeMath(hello, goodbye));
0 голосов
/ 31 августа 2018

Вы можете рассматривать combined (или переменные в общем смысле) как заполнитель для целочисленных значений. Поэтому при выполнении int combined = hello + goodbye; вы заполняете целочисленный заполнитель с именем combined суммой значений, хранящихся в заполнителях hello и goodbye. Когда вы позже выполните hello = 10;, вы помещаете только 10 в заполнитель с именем hello. Это не влияет на combined заполнитель вообще.

Итак, возобновляя: при написании int combined = hello + goodbye; вы не говорите, что комбинированная - это операция hello + goodbye, но результат этой операции в то время, когда она была выполнена.

0 голосов
/ 31 августа 2018

Вам необходимо пересчитать combined, потому что повторное присвоение значения hello не означает, что combined также будет обновлено. Значение для combined - это значение, рассчитанное с использованием текущего значения (на данный момент) hello.

int hello = 6;
int goodbye = 7;
int combined = hello + goodbye;

System.out.println(combined);
hello = 10;
combined = hello + goodbye; // recalculate
System.out.println(combined);
0 голосов
/ 31 августа 2018

Вы передаете int типов, которые будут делать все по значению . Это означает, что он присваивает combined a copy значений hello и goodbye, добавленных вместе.

Они полностью отделены и не связаны.

Дополнительное чтение

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