静态方法为什么不用修改引用类型变量

  private static void _2010_8_5_b() {
        String str = "abc";//new String("456");
        _2010_8_5_test(str);
        System.out.println(str);

    }

    private static void _2010_8_5_test(String str) {
        System.out.println("before:"+str);
        str = "123";
        System.out.println("after:"+str);
    }

    public static void main(String[] args) {
        // instance._2010_8_5();
        _2010_8_5_b();
    }

 

想通过方法_2010_8_5_test修改方法_2010_8_5_b() 中变量,但跳出方法_2010_8_5_b() 后,变量str值未变化,这是静态方法的特性吗?那应该怎样才能在静态方法中修改引用类型的变量。谢谢!

 

[code="java"]private static str;

private static void _2010_8_5_b() {
    str = "abc";//new String("456");
    _2010_8_5_test(str);
    System.out.println(str);

}

private static void _2010_8_5_test(String str) {
    System.out.println("before:"+str);
    str = "123";
    System.out.println("after:"+str);
}

public static void main(String[] args) {
    // instance._2010_8_5();
    _2010_8_5_b();
}[/code]

[code="java"]
private static String str;

private static void _2010_8_5_b() {
    this.str = "abc";//new String("456");
    _2010_8_5_test(str);
    System.out.println(str);

}

private static void _2010_8_5_test(String str) {
    System.out.println("before:"+str);
    this.str = "123";
    System.out.println("after:"+str);
}

public static void main(String[] args) {
    // instance._2010_8_5();
    _2010_8_5_b();
}[/code]