汇智动力

售前免费咨询热线: 4 0 0 - 1 8 6 - 0 9 0 5
汇智资讯Huizhi information

当前位置:首页 »Java真的有引用传递吗?

Java真的有引用传递吗?

日期:2021-07-15 10:38:42 访问量: 来源:

严格来说,Java只有值传递,没有引用传递一说。那么为什么会有这种说法?

首先来说说Java的数据类型。Java的数据类型分为基本数据类型和引用数据类型。

基本数据类型大致分为:byte、short、int、long四种整数型,float和double两种浮点型(也就是小说), 一种char字符型加一种boolean类型。而引用数据类型则是除这八种数据类型之外的所有数据类型。

Java真的有引用传递吗

那么基本数据类型和引用数据类型区别在哪呢?其区别在于对应数据类型的对象在内存中的位置不同。

jvm内存分为:方法栈区、堆内存区、本地方法栈、方法区以及程序计数器等。其中,我们常提到的两块内存是堆内存区和方法栈区。

接下来我还得说说啥叫变量。在Java中变量就是一个合法字符,用来存储某个对象对应的地址值。变量的值都是存储在方法栈区,不论是基本数据类型还是引用数据类型。只不过数据类型不同,该变量所指向的真正对象的值所存储区域不同。

对于基本数据类型来说,其值是直接放在方法栈区中,可以认为变量值就是其对象所对应的值。因此,当你进行方法调用时,是将方法栈中的值直接进行了传递。

但是对于引用数据类型来说则不是。引用数据类型存在两种值:真正值和引用值,其中引用值就是变量值。因为Java不允许直接访问堆区内容,所以我们只能通过方法栈区的变量值来间接访问堆中的真正值。因此,当进行方法调用时,实参会将其对应的引用值进行传递。究其本质,引用数据类型还是值传递,只不过传递的是引用值罢了。所以这就导致某些人说是引用传递。

相关阅读Reading

全国热线:400-186-0905

总部热线:028-6547-1147

周一至周日9:30-24:00

我要咨询
汇智动力微信

汇智动力微信公众号