【问题标题】:Passing a String parameter to a function and change it [duplicate]将字符串参数传递给函数并更改它[重复]
【发布时间】:2017-02-19 20:32:37
【问题描述】:

当将 String a 传递给 myFunction() 时,我传递了引用。为什么当它退出时,引用指向旧的 String ?它不使用对字符串的真实引用吗?

import java.time.*;

public class Main {
    public static void main(String[] args) {
        String a = "aaa";

        myFunction(a);

        System.out.println(a);
    }

    private static void myFunction(String a) {
        a = a + "111";
        System.out.println(a);
    }
}

【问题讨论】:

  • 您可以传递例如StringBuilder,因为它可以被方法修改,或者从方法返回结果String。 Java 字符串是不可修改的(常量、冻结)。
  • 为了回答您的问题,仅将引用传递到方法中。如果在方法中更改了引用,则不会将新的引用传回。

标签: java string parameters parameter-passing


【解决方案1】:

查看变量范围。您正在创建 a 变量的本地副本并将其设置在 myFunction() 中。本地副本的生存时间与该方法的生存时间一样长。当 Myfunction() 完成时,“a”的修改副本不再可访问。

【讨论】:

    猜你喜欢
    • 2011-05-12
    • 2014-01-21
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多