我给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)
我不想再给出这个值,因为我的代码我得到了很多变量,它们将测试变量作为值,我想做最短的方法.
首先,您将值"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)
从那里得到它?