Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Как и все остальные, вы должны указать свое возвращаемое значение. Потому что вы делаете «addFive (x)» вместо «x = addFive (x)»; вы просто печатаете экземпляр «x» в основном и никогда не получаете значение, возвращаемое функцией.
Это связано с тем, что «x» в вашей основной функции является переменной экземпляра, а ваш «x» в addFive () является локальной переменной. Это не одна и та же переменная, даже если они имеют одно и то же имя. Это может немного пояснить - http://www.tutorialspoint.com/java/java_variable_types.htm
Вы должны установить возвращаемое значение переменной, иначе оно будет потеряно и вы получите значение «x» в своем основном методе. Сделайте это вместо этого, чтобы захватить возвращаемое значение.
public static void main(String[] args) {
int x=3;
x = addFive(x);
System.out.println("x = " + x);
}
Если вы хотите видеть только возвращаемое значение и не сохранять его, вы можете даже вызвать вызов функции внутри System.out.println
.
public static void main(String[] args) {
int x=3;
System.out.println("x = " + addFive(x));
}
Вы хотите x=addFive(x);
, а не только addFive(x)
. Вызов addFive(x)
на свой счет не применит возвращаемое значение к любой переменной.
Значение в основной функции полностью отличается от значения в функции addFive(int x )
. Вы отправляете метод x
с основного на addFive(int x)
.
JVM делает копию x и отправляет ее методу addFive(int x)
. Затем x
изменяется в методе addFive(int x)
. Но метод x
в main()
остается неизменным.
Если вы хотите получить измененное значение, возвращенное addFive(int x)
из основного метода, вы можете сделать следующее -
int returnedValueFromAddFive = addFive(x)
Надеюсь, это поможет. Большое спасибо.
, когда вы вызываете метод в java, и вы не назначаете для какой-либо переменной, изменения происходят в вызове метода, после чего это значение будет потеряно и вернется к назначению, которое вы назначили. чтобы увидеть результат, вы должны сделать это System.out.println(addFive(x));
, но если вы хотите изменить значение x
, вам нужно назначить x = addFive(x);
Вы вызываете метод addFive(int x)
с x
, но не присваиваете возвращаемое значение чему-либо. Таким образом, область main()
внутри x
остается прежней, 3 - это то, что печатается. Таким образом, вы можете либо сохранить возвращенное значение самому x
:
x = addFive(x);
, либо вызвать вызов функции в инструкции печати:
System.out.println("x = " + addFive(x));
Метод возвращает значение, но вы должны также установить значение переменной при ее возврате, или как узнать, какую переменную вы хотите вернуть? У вас может быть 10 переменных, и если вы просто вызовете метод, как он узнает, какую переменную вернуть номер? Вот почему вы должны установить возвращаемое число в переменную следующим образом:
x = addFive(x);
Потому что вы просто не используете вычисление своей функции. Он не меняет значение x, он возвращает новое значение.
Вы должны сделать что-то вроде:
int y = addFive(x);