Я узнал о ссылках и типах данных в Java, и этот код по-прежнему меня озадачивает. Я понимаю, что все примитивные типы в Java - это типы значений (байты, короткие, int, long, float, double, boolean, char), а когда вы используете строку или объект, это ссылочный тип. Когда меня научили объявлять и инициализировать переменную, мне сказали подумать, как создать коробку. Поэтому, если я создаю переменную «y» и даю ей значение «5», это похоже на то, что я создал поле с именем «y», содержащее значение 5. Мой учитель сказал, что если я затем попытаюсь вызвать y в метод (ознакомьтесь с приведенным ниже кодом для более подробной информации) значение останется нетронутым, потому что это примитивный тип данных, поэтому я передаю только 5, а не переменную CONTAINS 5. Ну, я смущен, потому что, если я прохожу в значение 5, почему бы следующий метод не добавить на него.Все еще не уверены, почему это целое число остается неизменным
public class ReferenceAndValueTypes {
public static void main(String[] args) {
int y = 5;
addOneTo(y);
System.out.println(y);
}
static void addOneTo(int number){
number = number + 1;
}
}
Выход 5, и это меня смущает. Учитель говорит, что это потому, что int - это тип значения, поэтому мы не передаем переменную y, и мы не работаем над этой переменной, а скорее значение этой переменной. Однако значение этой переменной равно 5, и поскольку метод добавляет один, не должно быть 6? Или, потому что y является типом значения, метод не может работать с ним, поэтому ему просто нужно распечатать начальное значение y, которое равно 5?
Вы работаете на ** копии ** из эта переменная. –
значение равно 6, но только в методе addOneTo. (попробуйте распечатать числовую переменную в методе addOneTo) ... вы передаете значение «5» вашему методу добавления. вы добавляете 1 к нему -> дает «6». НО от того, где вы его назвали .. значение не изменилось (как это должно быть ... вы просто передали значение VALUE вашему методу) – griFlo
@Seelenvirtuose Я не уверен, что здесь разумный обман, поскольку OP не " t понимать разницу между передачей по значению и передачей по ссылке. –