值传递(pass by value)

方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值。也就是说方法只能改变堆内存中的值,而不能改变栈内存中的值。实例变量都是保存在堆内存里的。不管是引用类型还是基本类型。所有的引用类型的值都是保存在堆内存里的。

特别注意:对基本类型是pass by value,而对引用类型则是pass by ref.

例如:

public class TestReference {

int i = 5;

int j = 6;

A a = new A();

public void changeIJ(int m, int n) {// 试图改变基本类型的参数的值

int z = 0;

z = m;

m = n;

n = z;

}

public void changeAB(A a1, A a2){ // 试图改变引用类型的参数的地址

A a = null;

a = a1;

a1 = a2;

a2 = a;

}

public void test(int c){ // 试图改变基本类型的参数的值

c = c + 6;

}

public void testA(A a) {// 试图改变引用类型参数的值

a.i = 100;

}

public static void main(String[] args) {

TestReference t = new TestReference(); // 构造本类的一个对象

int z = 5;

int y = 6;

A aa = new A(); // 定义A类的一个对象aa

t.testA(aa); // 改变对象aa的值

System.out.println(aa.i); // 输出aa的值(属性值)

A bb = new A(); // 再定义A类的一个对象bb

t.changeIJ(z, y); // 试图改变两个基本类型的值

t.changeAB(aa, bb);// 试图改变两个引用类型的地址

System.out.println(z);

System.out.println(y);

System.out.println(aa.i);

System.out.println(bb.i);

}

}

class A {

int i = 5;

};

输出结果如下:

100

5

6

100

5

可见,方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值。

java视频教程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值