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

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

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

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

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

然后我们来看看第一题,

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

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

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

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

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

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

四: 不修改   同理 三

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