Avatar ·

Java是按值传递还是按引用传递?解析一个流行的误解

大家好!我是一名初学Java的开发者,有一个基本问题一直困扰着我。很多人说Java按引用传递对象,按值传递基本类型。但我读到过,实际上Java总是按值传递参数。我尝试写了一段小代码来理解,但它让我更加困惑了。 以下是示例: ```java public class Main { public static void main(String[] args) { int x = 5; changePrimitive(x); System.out.println("After changePrimitive: " + x); // 输出: 5 StringBuilder sb = new StringBuilder("Hello"); changeObject(sb); System.out.println("After changeObject: " + sb); // 输出: Hello World } public static void changePrimitive(int value) { value = 10; } public static void changeObject(StringBuilder builder) { builder.append(" World"); } } ``` 在第一个例子中,基本类型`int`没有改变——这可以理解,是按值传递。