Почему, если присвоить первому массиву второй массив, то все манипуляции со вторым массивом также присваиваются первому массиву?

186
29 января 2022, 00:40

С тем, как этого избежать я уже разобрался, нужно просто присвоить элементы второго массива элементам первого:

int[] noSortNum = new int[32];
        for (int i =0;i<noSortNum.length;i++){
            noSortNum[i]=num[i];
        }

Однако до сих пор не могу понять, что происходило до этого, я присваивал:

int[] noSortNum = num;

Сортировал массив num, после чего массив noSortNum также становился отсортированным. Подскажите, пожалуйста, как это работает и для чего это было сделанно?

Answer 1

У вас есть объект массива в памяти и ссылка на него num. Когда вы вызвали int[] noSortNum = num; вы создали вторую ссылку на тот же самый объект в памяти. Естественно когда вы его отсортировали - вы по обоим ссылкам увидели один и тот же отсортированный массив

READ ALSO
как правильно добавить библиотеки в android cmake jni

как правильно добавить библиотеки в android cmake jni

Имеется cmake файл, не знаю правильно ли добавляю в неё зависимости библиотекнужно добавить egl и glesv3

124
Проблема с плавным отображение в OpenGL

Проблема с плавным отображение в OpenGL

Программа должна крутить куб на который наложена текстура

206
Помогите с C++ | float и Char

Помогите с C++ | float и Char

Есть переменная, которую получаю из класса (тип float): Class->floatVar Нужно вывести нормально с char

114