码迷,mamicode.com
首页 > 其他好文 > 详细

我被HR问到的问题-3

时间:2017-06-05 18:23:52      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:输出   bsp   引用   ges   原则   main方法   alt   logs   引用传递   

  你认为我说java是传引用对吗?

  首先在Java中不存在引用传递,是以值传递的具体可以看一下面这个例子。

  技术分享

  运行结果

  技术分享

  1.首先运行mian方法入栈,给x,y变量分配地址,接下来执行operator方法,此时operator放入栈,其分配地址给形参x,y;当运行operator的时候且传入x,y此时形参x,y的分别指向了内存中值为x和值为y的地址(常量池中的)。

  2. 在operator中操作的x,y是形参的而不是main方法中的,可以理解成就近原则吧。当运行x=x+y;的时候会将x和y拼接起来,此时x的地址不在指向之前常量池中的x地址了,而是指向一个新的地址xy。此时输入的时候自然就是xy咯。

  3.运行y=x;就是将operator的形参x执行的地址赋给了y,所以此时y输出来的值就是xy.

  4.运行完operator方法就将其弹出栈。(这和栈的数据结构设计有关)所有的给operator方法分配的空间也就消失了。

  5.运行输出语句发现x和y没有发生改变。这是因为在operator方法中的操作始终是在对自己的形参在操作。

  所以可以理解成Java是值传递(地址值),而不是引用传递。

 

我被HR问到的问题-3

标签:输出   bsp   引用   ges   原则   main方法   alt   logs   引用传递   

原文地址:http://www.cnblogs.com/mohehpc/p/6946356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!