关于java按值传递

来源:百度知道 编辑:UC知道 时间:2024/06/16 02:24:59
class B{
int i=10;
}

public class A {
public void test(B b){
b.i=20;
}
public static void main(String[] args){
A a1=new A();
B b1=new B();
a1.test(b1);
System.out.println(b1.i);
}
}
程序的输出为什么是20,而不是10呢?

因为对象是值类型的,在对象最为参数的时候,你向
方法传递的其实使指向该对象的句柄,也就是内存地址
你对该对象的任何修改都会引起内存中存储的数据的改变,
这也就是为什么你的结果是20而不是10的原因。

因为
public class A {
public void test(B b){
b.i=20;
}

b.i=20已经将i的值已经改变了啊。

因为你的b1是B类的对象 是一个引用
所以是按引用传递,就会改变i的值~

这是一个引用类型,引用类型是把自己的内存地址传递给别的方法操作,操作的就是引用类型值的本身,所以自己的值改变了!