值传递
在 Java 中,基本数据类型(如 int
、double
、char
等)在方法调用时是值传递。这意味着当将一个基本数据类型的变量作为参数传递给方法时,传递的是变量的值的副本。
例如:
public class ValuePassingExample { public static void main(String[] args) { int num = 10; modifyValue(num); System.out.println(num); // 输出仍然是 10 } public static void modifyValue(int num) { num = 20; } }
在上述例子中,在 modifyValue
方法中对 num
的修改不会影响到 main
方法中的 num
变量。
引用传递
对于对象类型(包括数组和自定义类的对象),在方法调用时是引用传递。传递的是对象的引用(即内存地址)的副本,但通过这个副本仍然可以操作原对象。
例如:
public class ReferencePassingExample { public static void main(String[] args) { StringBuilder strBuilder = new StringBuilder("Hello"); modifyStringBuilder(strBuilder); System.out.println(strBuilder.toString()); // 输出为 "Hello World" } public static void modifyStringBuilder(StringBuilder strBuilder) { strBuilder.append(" World"); } }
在这个例子中,通过 modifyStringBuilder
方法对 strBuilder
对象的修改,会影响到 main
方法中的 strBuilder
对象。