java简单问题,求详细答案如题

 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
百度网友324204d
2017-03-18 · TA获得超过648个赞
知道小有建树答主
回答量:380
采纳率:85%
帮助的人:294万
展开全部

这道题是考java中的值传递和引用传递。首先呢,你必须理解这两个概念,什么是值传递,什么是引用传递。

值传递:在具体的实参传递到方法中定义的形参的时候,传递的是值的拷贝,也就是复制一份来的值,这样就有个两个值,在方法内部对参数进行处理的时候,实际上是处理的那个拷贝后的值,而原来的值更本没有改变,因此就不会动。


引用传递:在具体的实参传递到方法定义的形参的时候,传递的是引用的地址的拷贝,也就是对象在堆中的地址,这样的话指针指向实际对象的值是同一个,也就是你传递了引用,其实也就改变了对象本身。


ps:也有一种说法是引用传递也是值传递,其实是不同的说法,本质上都是一样的。

String和数组都是引用数据类型,因此属于引用传递。也就是说他们传递的过程会对值本身产生变化,但是那么问题来了?为什么string没有改变呢?你不是说String也是按引用传递的么?这就涉及到另一 个问题,因为String是final的,因此它的地址是无法改变的,也就是你new之后,再怎么传递,它的值均不会发生改变,那么地址也不会被传递,因此不会发生改变咯。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式