package com.test;
public class Callbyvalref {
int data = 50;
int x = 10;
void change(Callbyvalref call) {
call.data = call.data + 500;
}
void nochange(int x) {
x = x + 25;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Callbyvalref call = new Callbyvalref();
call.change(call);
System.out.println("Call By reference: " + call.data);
call.nochange(500);
System.out.println("Call By Value: " + call.x);
}
}
通过参考呼叫:550 按价值呼叫:10
当我改变
void nochange(int y) {
x = x + 25;
}
通过参考呼叫:550 按价值呼叫:35
两次Call.x打印不同的值..任何人都可以解释当参数变量发生变化时发生的变化是什么。
答案 0 :(得分:0)
这是基本上发生的,因为Java确实提供了对象的信息作为通过值传递的引用。
我将把这篇文章留给你进一步调查。
答案 1 :(得分:0)
将基元传递给方法时,仅复制该值。参数是一个新的局部变量,它使用传递给它的值进行初始化,与"原始"无关。值。如果你修改它,你只是修改一个局部变量,并且不能影响方法调用中使用的变量。
答案 2 :(得分:0)
在上面的代码中,在方法
中void nochange(int x) {
x = x + 25;
}
该功能中的本地变量正在更改。如果您更改上述方法如下:
void nochange(int x) {
this.x = x + 25;
}
OR
void nochange(int y) {
x = y + 25;
}
你可以看到那里发生的事情。