云优惠
 云服务器优惠大全

首页    编程语言    Java 传参传值案例代码分析

Java 传参传值案例代码分析

创建时间:2019-01-09 08:35
浏览量:0
收藏

Java 传参传值案例代码分析


案例代码

1

2


案例分析


example A

调用passInteger(a)时,产生了一个新的局部变量arg,并且变量arg被赋值为a存放的引用,紧接着执行方法passInteger内的赋值语句 arg = 2019,此时局部变量arg被重新赋值为一个新的引用;

只执行passInteger(a)并不会修改main方法变量a的值(即变量a存放的引用),因为passInteger方法只对局部变量arg重新赋值并返回,调用passInteger(a)方法时仅仅是把变量a存放的引用传给了变量arg

执行 a = passInteger(a)时; 因为passInteger方法返回了一个新的引用(且每次调用都返回一个新引用,因为 arg = 2019 语句产生了新的对象), 并且赋值给了变量a,因此main方法变量a当然是改变了


example B

调用passPojo(pojo1)时,产生了一个新的局部变量pojoA,并且变量pojoA被赋值为参数pojo1的值(即pojo1存放的引用),此时变量pojoA的值为变量pojo1存放的引用(该引用指向pojo1对象的内存空间),两个变量存放的引用是相同的;

执行pojoA.setX(2019); pojoA.setY("2019"); 修改了该引用指向的内存空间的数据,因此即使仅仅调用passPojo(pojo1),变量pojo1指向的内存空间的数据也会相应得到改变


example C

pojo2 = passPojo(pojo2);与passPojo(pojo2);的区别是前者接收了方法passPojo返回的引用,并赋值给了变量pojo2;但根据example B的分析可得,调用passPojo(pojo2)返回的引用其实和调用之前pojo2存放的引用是指向同一个空间的引用,

只是变量pojoA存放的是变量pojo2指向的内存空间引用的副本而已;


example D

example D和example A本质其实是相同的,

passPojoAndReassign(pojo3)时,产生了一个新的局部变量pojoB,并且变量pojoB被赋值为pojo3存放的引用,紧接着执行方法内语句pojoB = new Pojo(2020, "2020"); 此时局部变量pojoB被重新赋值为一个新的引用,该新引用指向new Pojo(2020, "2020")对象存放的内存空间;只修改了变量pojoB存放的引用,变量pojo3没有任何修改;

只执行passPojoAndReassign(pojo3),由于变量pojo3没有接收passPojoAndReassign方法的返回值所以并不会修改main方法变量pojo3存放的引用,而且passPojoAndReassign方法内也没有修改变量pojo3存放的引用指向的内存空间的数据,因此变量pojo3没有任何改变;

pojo3 = passPojoAndReassign(pojo3);与passPojoAndReassign(pojo3)的唯一的不同点是前者用变量pojo3接收了passPojoAndReassign方法返回的新的引用,且每次调用passPojoAndReassign方法都返回一个新引用,因此main方法中变量pojo3存放的引用被改变了


案例数据变化打印输出

3

免费领取阿里云1888元代金券大礼包

 

阿里云新老用户均可领取!
自领取后:限时7天使用!

阿里云服务器2折优惠:低至293元/年

 

 

突发性能实例t5 1核1G:293元/年

突发性能实例t5 1核2G:459元/年

突发性能实例t5 2核4G:798元/年

共享型xn4实例1核1G内存:394元/年

共享型n4实例1核2G内存:653元/年

计算网络增强型实例2核4G内存:1566元/年

计算网络增强型实例4核8G内存:2991元/年

点此查看2折活动详情

阿里云高性能云服务器

 

 

网络增强型云服务器:2核4G ¥720元/年

高频应用云服务器:8核16G ¥4109元/年

本地SSD型云服务器:4核16G ¥6218.40元/年

大数据型云服务器:8核32G ¥11375.00元/年

GPU异构云服务器:16核40G ¥15563.00元/年

新用户满立减:每满1000立减50

 

1、到阿里云官网选购产品
2、加入到购物车
3、结算时立享满减

注意:新用户首次购买时必须先加到购物车,然后一起结算才享受此优惠。

腾讯云CVM云服务器22.07元起

 

 

腾讯云1核1G:22.07元/月、794.73元/3年

腾讯云2核2G:36.48元/月、1313.35元/3年

腾讯云2核4G:43.01元/月、1548.5元/3年

腾讯云4核8G:178.5元/月、6426元/3年