java基础 值传递

java只有值传递

分为基础类型与object

基础类型直接传递值,而object中传递引用(地址)

比如

void main(){

int i = 0;

function(i);//改变i的值: i = 1;

print(i);

//结果为0

}

其中i被传递,拷贝了一份,修改的是拷贝以后的值

void main(){

String string = "function";

function(string);//改变string的值:string = "new";

print(string);

//结果为function

}

其中string被传递引用,但是在方法中并没有改变引用的值,而是使拷贝的临时变量指向了内存内容为“new”的字符串,原先的string还是指向了“function”

void main(){

StringBuilder build = new StringBuilder("function");

function(build);//改变build的值:build.append(" new");

print(build);

//结果为function new

}

其中build被传递引用,在方法中使用了拷贝后的地址后修改了build的内容。


以上string比较特殊的是,在编译过程中,如果使用了“=”为其复制,则是指向新的内存地址,并不会影响拷贝之前的对象。因为在jvm中,为每一个字符对象都创建了一个物理空间,随后把string类型的对象指向这个物理空间的地址。其他的对象传递则是传递地址,根据地址去执行修改object的操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值