Почему переменные, которые я изменяю внутри myMethod
, не изменяются за пределами этой области?Является ли Java pass-by-value или pass-by-reference?
public class TestLoop {
public static void main(String[] args) {
myMethod(0, 3);
}
static void myMethod(int i, int j) {
System.out.println("i for:" + i + " j:" + j);
if (i == j)
return;
else {
myMethod(i + 1, j);
System.out.println("after myMethod Call for: i:" + i + " j: " + j);
}
System.out.println("outside i for: " + i);
}
}
Что значит «откат»? Переменные не существуют нигде, кроме как в методе, как они могут быть чем-то после возвращения? Если вы имеете в виду, что вызов метода не изменяет переменные вне метода, то это так, как есть. Это не имеет никакого отношения к 'return', переменные просто не меняются за пределами. Как изменились бы «0» или «3»? –
просто рекурсивный вызов и завершается, когда локальная переменная удовлетворяет условию 'i == j', читает о локальных переменных и возвращаемом операторе –
, вы можете' return; 'в функции void, какие действия действуют как' break' внутри loop – SomeJavaGuy