面试官:兄弟,说说Java到底是值传递还是引用传递?

01、值传递 VS 引用传递
首先,我们必须要搞清楚,到底什么是值传递,什么是引用传递,否则,讨论 Java 到底是值传递还是引用传递就显得毫无意义。

当一个参数按照值的方式在两个方法之间传递时,调用者和被调用者其实是用的两个不同的变量——被调用者中的变量(原始值)是调用者中变量的一份拷贝,对它们当中的任何一个变量修改都不会影响到另外一个变量。

而当一个参数按照引用传递的方式在两个方法之间传递时,调用者和被调用者其实用的是同一个变量,当该变量被修改时,双方都是可见的。

Java 程序员之所以容易搞混值传递和引用传递,主要是因为 Java 有两种数据类型,一种是基本类型,比如说 int,另外一种是引用类型,比如说 String。

基本类型的变量存储的都是实际的值,而引用类型的变量存储的是对象的引用——指向了对象在内存中的地址。值和引用存储在 stack(栈)中,而对象存储在 heap(堆)中。面试官:兄弟,说说Java到底是值传递还是引用传递?
02、基本类型的参数传递
众所周知,Java 有 8 种基本数据类型,分别是 int、long、byte、short、float、double 、char 和 boolean。它们的值直接存储在栈中,每当作为参数传递时,都会将原始值(实参)复制一份新的出来,给形参用。形参将会在被调用方法结束时从栈中清除。

来看下面这段代码:面试官:兄弟,说说Java到底是值传递还是引用传递?
03、引用类型的参数传递
来看一段创建引用类型变量的代码:
面试官:兄弟,说说Java到底是值传递还是引用传递?
面试官:兄弟,说说Java到底是值传递还是引用传递?
面试官:兄弟,说说Java到底是值传递还是引用传递?
后续会有持续更新,记得给小编点个赞呦。小编还有公众号:芝麻代理。里面会有我每天最新文章的更新。还整理了一些python学习资料。回复:资料分享。免费领取。面试官:兄弟,说说Java到底是值传递还是引用传递?