-1

可能的重复:
Java 是“按引用传递”吗?

为什么下面的代码打印“测试”而不是抛出一个NullPointerException

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder();
    sb.append("test");
    append(sb);
    System.out.println(sb.toString());
}

public static void append(StringBuilder sb) {
    sb = null;
}
4

3 回答 3

5

sb您将方法中的局部变量设置append()null- 这不会影响调用环境的变量,它保持不变。

于 2012-08-09T12:56:10.080 回答
0

因为您的自定义附加模型不会将 sb 返回到父方法。因此System.out.println(sb.toString());只是在当前上下文中返回 sb 方法。

于 2012-08-09T12:57:59.643 回答
0

因为如果您为方法参数分配值,它只会在该方法的范围内维护新值。换句话说,如果你把它放在方法System.out.println(sb)里面,它会抛出一个 NPE append

于 2012-08-09T12:58:12.140 回答