用java和字符串变量指针

LeS*_*Sam 2 java string

我给String变量赋了一个值(作为变量).

问题是,当我更改此值时,它不会更改其他变量:

代码:

 String test = "hello";
 String myname = test;
 test = "how are you ?";
Run Code Online (Sandbox Code Playgroud)

myname的输出是"你好"

我希望输出结果为"你好吗?" 新的测试价值; 怎么做而不再给出价值,如:

myname = test;
Run Code Online (Sandbox Code Playgroud)

我不想再给出这个值,因为我的代码我得到了很多变量,它们将测试变量作为值,我想做最短的方法.

Mat*_*ter 9

首先,您将值"hello"(在内存中的某个位置)分配给test:

test --------------> "hello"
Run Code Online (Sandbox Code Playgroud)

然后,您将设置myname到内存中的相同位置.

test --------------> "hello"
                  /
myname ----------/
Run Code Online (Sandbox Code Playgroud)

然后,您将分配值"你好吗?" 在记忆中的位置test:

                   -> "hello"
                  /
myname ----------/

test --------------> "how are you?"
Run Code Online (Sandbox Code Playgroud)

这都是关于指针的.

评论后编辑

我不知道你的代码的其余部分是什么样的,但是如果你想能够更新单个String并同时拥有对该String更新的其余引用,那么你需要使用StringBuilder(或者StringBuffer如果你需要同步):

    StringBuilder test = new StringBuilder("hello");
    StringBuilder myname = test;
    StringBuilder foo = test;
    StringBuilder bar = test;
    test.replace(0, test.length(), "how are you?");
    Assert.assertEquals("how are you?", test.toString());
    Assert.assertEquals("how are you?", myname.toString());
    Assert.assertEquals("how are you?", foo.toString());
    Assert.assertEquals("how are you?", bar.toString());
Run Code Online (Sandbox Code Playgroud)

从那里得到它?