爲什麼我在myMethod
裏修改的變量沒有在該範圍之外修改?Java是通過值傳遞還是通過引用傳遞?
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'時,終止,讀取關於局部變量和返回語句 –
您可以'返回;'在一個void函數中,這種行爲類似於循環 – SomeJavaGuy