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`没有改变——这可以理解,是按值传递。