在 Java 中通过引用传递字符串? [英] Passing a String by Reference in Java?

查看:30
本文介绍了在 Java 中通过引用传递字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我习惯于在 C 中执行以下操作:

I am used to doing the following in C:

void main() {
    String zText = "";
    fillString(zText);
    printf(zText);
}

void fillString(String zText) {
    zText += "foo";
}

输出是:

foo

但是,在 Java 中,这似乎不起作用.我假设是因为 String 对象是 copyed 而不是 通过引用传递.我认为字符串是对象,它们总是通过引用传递.

However, in Java, this does not seem to work. I assume because the String object is copied instead of passed by referenced. I thought Strings were objects, which are always passed by reference.

这里发生了什么?

推荐答案

您有三个选择:

  1. 使用 StringBuilder:

  1. Use a StringBuilder:

StringBuilder zText = new StringBuilder ();
void fillString(StringBuilder zText) { zText.append ("foo"); }

  • 创建一个容器类并将容器的一个实例传递给您的方法:

  • Create a container class and pass an instance of the container to your method:

    public class Container { public String data; }
    void fillString(Container c) { c.data += "foo"; }
    

  • 创建一个数组:

  • Create an array:

    new String[] zText = new String[1];
    zText[0] = "";
    
    void fillString(String[] zText) { zText[0] += "foo"; }
    

  • 从性能的角度来看,StringBuilder 通常是最好的选择.

    From a performance point of view, the StringBuilder is usually the best option.

    这篇关于在 Java 中通过引用传递字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆