1. Java方法传参的本质解析
在Java开发中,方法参数传递机制是每个开发者必须掌握的基础概念。很多初学者甚至有一定经验的开发者,在面对"Java到底是值传递还是引用传递"这个问题时,常常会产生困惑。本文将深入剖析Java方法传参的底层原理,通过实际代码示例展示不同数据类型的传递特性。
1.1 基本数据类型传参
对于基本数据类型(int、double、boolean等),Java采用的是纯粹的值传递机制。当我们将一个基本类型变量作为参数传递给方法时,实际上传递的是该变量值的副本,而不是变量本身。
java复制public static void main(String[] args) {
int num = 10;
modify(num);
System.out.println("main方法中的num: " + num); // 输出10
}
static void modify(int param) {
param = 20;
System.out.println("modify方法中的param: " + param); // 输出20
}
在这个例子中,虽然modify方法内部修改了param的值,但main方法中的num变量保持不变。这是因为传递给modify方法的只是num值的一个副本,方法内部对参数的修改不会影响原始变量。
1.2 引用类型传参
当参数是对象引用时,情况会稍微复杂一些。Java仍然采用值传递机制,但传递的是引用的副本(即对象在堆内存中的地址值的副本),而不是对象本身。
java复制public static void main(String[] args) {
StringBuilder sb = new StringBuilder("初始值");
modifyReference(sb);
System.out.println(sb.toString()); // 输出"初始值-修改后"
}
static void modifyReference(StringBuilder param) {
param.append("-修改后");
}
这里sb和param都指向堆内存中的同一个StringB
