我被HR问到的问题-3

Posted Hepc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我被HR问到的问题-3相关的知识,希望对你有一定的参考价值。

  你认为我说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的主要内容,如果未能解决你的问题,请参考以下文章

我被HR问到的问题-5

我被HR问到的问题-1

HR面试常问到的问题

唯品会Java面试时问到的10道问题,你能答出几道?

浅谈JavaScript函数重载

求助:HR和财务接口问题