JAVA的方法传参值传递与引用传递

文章讨论了Java中方法参数传递的原理,区分了值传递和引用传递。对于对象作为参数,即使是引用类型,传递的也是对象的内存地址值。因此,方法内部对对象属性的修改不会影响到方法外部的对象,而对于String类型的参数,由于其不可变性,方法内的修改不会影响到原始字符串。
摘要由CSDN通过智能技术生成

今天跟hr聊面试,二话不说先给了4个题目如下:

1.问题: JAVA的方法传参是值传递还是引用传递
2.问题: 传递对象的时候是传递引用还是值传递
3.问题: 对象作为入参,在方法中对对象属性做了修改,return后,对象的属性是否被修改了
4. 问题:String作为入参,在方法中做了修改,return后,字符串是否被修改了

尴尬的事我竟然不知道解题思路。估计面试没戏了。我们进入正题。

首先我们需要知道什么是值传递,什么事引用传递,官方的解释是这样的

1.值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
2.引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法

然后我们来看看第一题,

参数分为两种一种是  一种是基本类型 如 int....,一种是引用类型 如 对象,数组....

但是管是引用类型还是基本类型 当做为参数时 都是具体的 一个值,基本类型就不说了,单说一下引用类型,引用类型当参数实际是一个内存地址(我的理解是一个标记的值) 别人对引用类型当参数的结论大家可以参考下。

 。。。。太长了还有实列我还是不copy。反正结论就是应用类型当参数实际是一个地址,这个地址也算是值,然后导致引用类型参数也是值传递。那现在我们就可以解题了;

一。值传递,(应该没什么问题)

二。值传递,String 是一个引用类型,(内存地址)也算值传递

三。 不被修改   这个可以这么理解,首先我们确实是  值传递,值传递是修改不被影响的。那我们可以确定单改属性是不好修改。(但是有如果整个地址都被更换是可以被修的,比如重新new 一个对象)

四: 不修改   同理 三

知识浅薄看是否理解的正确如果不正确,欢迎指点。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值