多图证明,Java到底是值传递还是引用传递?(上)

简介: 多图证明,Java到底是值传递还是引用传递?(上)

开篇先来曝答案,在 Java 语言中,本质只有值传递,而无引用传递,解释和证明详见正文。

说到值传递和引用传递我们不得不提到两个概念:值类型和引用类型。


1.值类型

通俗意义上来说,所谓的值类型指的就是 Java 中的 8 大基础数据类型:

  • 整数型:byte、int、short、long
  • 浮点型:float、double
  • 字符类型:char
  • 布尔类型:boolean

image.png

从 JVM 层面来讲:所谓的值类型指的是在赋值时,直接在栈中(Java 虚拟机栈)生成值的类型,如下图所示:

image.png

2.引用类型

引用类型是指除值类型之外的数据类型,比如:

  • 接口
  • 数组
  • 字符串
  • 包装类(Integer、Double...)

image.png


从 JVM 的层面来讲,所谓的引用类型是指,在初始化时将引用生成栈上,而值生成在堆上的这些数据类型
,如下图所示:

image.png

PS:关于包装类为什么是引用类型?我们后面的文章会单独讲,记得关注:Java中文社群


相关文章
|
5月前
|
存储 Java
Java 中的值传递与拷贝机制详解
本文深入解析了Java中的值传递与拷贝机制,澄清了“值传递”和“引用传递”的概念混淆。Java仅支持值传递,对象变量传递的是引用的副本,导致方法内可修改对象内容但不会改变引用地址。同时探讨了浅拷贝与深拷贝的区别,前者仅复制引用,后者创建全新对象以确保独立性。文章结合实例分析基本数据类型、对象、数组及集合在传递和复制时的行为,帮助读者全面理解Java内存管理与对象操作原理。
116 10
java是值传递还是引用传递
本文澄清了Java中参数传递的常见误解,总结出Java采用“值传递”的方式。对于基本类型,传递其值的拷贝,方法内修改不影响原值;而对于对象类型,则传递其引用地址的拷贝,尽管是拷贝,但因指向同一对象,故方法内的修改会影响原对象状态。形参仅在方法内部有效,而实参则是调用方法时传递的具体值。通过示例和比喻(如复刻仓库钥匙),形象地解释了值传递、引用传递及Java特有的“共享对象传递”概念,帮助理解不同情况下参数传递的行为差异。
193 1
java中的值传递和引用传递
【8月更文挑战第3天】在Java中,值传递用于基本数据类型,传递的是值的副本,因此方法内的修改不影响原值;而引用传递用于对象和数组,虽传递的是引用的副本,但对对象内容的修改会影响原始对象。理解这两者对于正确处理方法调用及参数至关重要。
java中的值传递和引用传递
【8月更文挑战第2天】在Java中,基本数据类型如`int`、`double`等采用值传递,传递的是变量值的副本,因此方法内的修改不影响原变量。对象类型则通过引用传递,传递的是对象引用的副本,允许方法内修改原对象。例如,对`StringBuilder`对象的修改会影响原始对象。
|
存储 安全 Java
Java方法的值传递技术详解
Java方法的值传递技术详解
84 3
|
JavaScript 前端开发 Java
【JAVA面试题】什么是引用传递?什么是值传递?
【JAVA面试题】什么是引用传递?什么是值传递?
|
Java
Java的值传递与“引用传递”辨析
Java的值传递与“引用传递”辨析
80 0
|
Java
每日一道Java面试题:Java是值传递还是引用传递?
每日一道Java面试题:Java是值传递还是引用传递?
84 1
|
存储 Java
如何理解Java是按值传递
如何理解Java是按值传递

热门文章

最新文章