Поначалу это может звучать странно, может показаться простым, но я застрял в ожидаемой точке. Я думаю, что в следующем коде на text
ссылаются s
и t
, в качестве вывода я бы получил hello world hello world
, но не. Я получаю hello world
.
class Test2 {
private volatile static String text = "";
public static void main(String[] args) {
String s = text;
text = "hello world";
String t = text;
System.out.println(s + " " + t);
}
}
Какой момент я упустил до сих пор? Я действительно сбит с толку этим. Предположительно новый объект создается там неявно. Но почему?
Следующий не относится к Java, но знает C Я пытаюсь интерпретировать приведенный выше код на C. Я получаю ожидаемый результат там, hello world hello world
.
#include <stdio.h>
int main()
{
char const volatile * volatile x = "";
char const volatile * volatile const * xPtr = &x;
x = "hello world";
char const volatile * volatile const * xPtr2 = &x;
printf("%s %s\n", *xPtr, *xPtr2);
return 0;
}