Java教程-Java 值传递
在Java中,只有值传递(pass-by-value)的方式,而没有引用传递(pass-by-reference)。当我们调用一个值传递的方法时,我们将实际参数的值复制给了方法的形式参数,而不是传递实际参数的引用。
java 值传递
在值传递的情况下,如果在被调用方法中对形式参数进行修改,不会对调用方法中的实际参数产生影响。这是因为在方法调用时,会创建形式参数的副本,并在方法执行结束后丢弃这个副本,不会对实际参数产生影响。
让我们看一个简单的例子来说明值传递的概念:
class Operation{
int data=50;
void change(int data){
data=data+100;//更改将仅在局部变量中
}
public static void main(String args[]){
Operation op=new Operation();
System.out.println("before change "+op.data);
op.change(500);
System.out.println("after change "+op.data);
}
}
输出:
before change 50
after change 50
java中按值调用的另一个例子
在Java中,通过引用调用的情况是指将对象作为参数传递给方法,这样方法内对对象的修改会影响到原始对象。这是因为对象在Java中是通过引用传递的。
当我们将一个对象作为参数传递给方法时,实际上是将对象的引用(内存地址)传递给了方法。因此,在方法内部对对象的修改会反映到原始对象上。
让我们看一个简单的例子来说明通过引用调用的概念:
class Operation2{
int data=50;
void change(Operation2 op){
op.data=op.data+100;//变化将在实例变量中
}
public static void main(String args[]){
Operation2 op=new Operation2();
System.out.println("before change "+op.data);
op.change(op);//传递对象
System.out.println("after change "+op.data);
}
}
输出:
before change 50
after change 150