В Java почти все (кроме простых примитивов, таких как int
или char
) - это ссылка или указатель - то, что хранится в переменной, не является самим значением,но адрес в памяти, где фактические данные.
cover = privateStringArr
shouldBePrivate = testClass.getStringArr()
Эти два назначения не копируют фактические данные в Java - они просто копируют адрес в памяти, где находятся данные.
private String[] privateStringArr = new String[10]; // create an array of 10 Strings, and store the address in privateStringArr
String[] cover = privateStringArr; // copy address to cover
return cover; // return the address stored in cover
String[] shouldBePrivate = testClass.getStringArr();// copy returned address to shouldBePrivate
shouldBePrivate[0] = "hello"; // find the data at address read from shouldBePrivate and modify it's first element
testClass.getStringArr()[0] // find the data at address returned from getStringArr() and read the first element