开篇先来曝答案,在 Java 语言中,本质只有值传递,而无引用传递,解释和证明详见正文。
说到值传递和引用传递我们不得不提到两个概念:值类型和引用类型。
1.值类型
通俗意义上来说,所谓的值类型指的就是 Java 中的 8 大基础数据类型:
-
整数型:byte、int、short、long
-
浮点型:float、double
-
字符类型:char
-
布尔类型:boolean
从 JVM 层面来讲:所谓的值类型指的是在赋值时,直接在栈中(Java 虚拟机栈)生成值的类型,如下图所示:
2.引用类型
引用类型是指除值类型之外的数据类型,比如:
-
类
-
接口
-
数组
-
字符串
-
包装类(Integer、Double...)