java 传址,Java传值和传址

本文通过实例探讨了Java中参数传递的问题。实验表明,对于基本类型int和引用类型String,参数传递是按值传递,函数内部操作不会影响原始变量值。而对于引用类型的List,由于传递的是引用地址,函数内部对List的操作会改变其实际值。这揭示了Java参数传递的特性。
摘要由CSDN通过智能技术生成

调用函数时,传的参数过去可能是传值,也可能是传址。如果是传值,函数内部的操作对参数的值没有影响;如果是传址,函数内部的操作是对参数指向的内存进行操作,会影响参数的值。

Java到底是传值还是传址?用下面这个例子可以实验一下:

package test;

import java.util.ArrayList;

import java.util.List;

public class ValueAndAddress {

public static void f1(int x){

x = x + 5;

return;

}

public static void f2(String s){

s = new String("10000");

return;

}

public static void f3(List list){

list.remove(0);

list.remove(1);

list.remove(2);

return;

}

public static void main(String[] args) {

int x = 5;

String s = new String("abcdef");

List list = new ArrayList();

list.add(0);

list.add(1);

list.add(2);

list.add(3);

list.add(4);

f1(x);

f2(s);

f3(list);

System.out.println("x=" + x);

System.out.println("s=" + s);

for (int i=0; i

System.out.println("list[" + i + "]=" + list.get(i));

}

}

}

运行结果:

b9281d62501918e4e2cac0238224355d.png

可见,int和String类型的参数值没有发生改变,是传值,而List类型的参数值发生了改变,是传址。

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值