копируется-то оно норм, но ты шаришь состояние
Можешь пояснить подробнее почему нет?
Потому что массив - объект. Массив массивов - объект объектов. Когда ты делаешь copyOf, ты берёшь все объекты (массивы-"строки") из оригинального массива и их же кладёшь во второй. А значит, у них общее состояние, и все изменения будут общими. int[][] source = {{1, 2}, {3, 4}}; int[][] dest = Arrays.copyOf(source, 2); dest[0][0] = 10; System.out.println(source[0][0]);
То есть получается, новый массив будет хранить в себе ссылки на подмассивы исходного?
Всё так.
А перебором элементов норм копировать вообще?
https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#arraycopy(java.lang.Object,%20int,%20java.lang.Object,%20int,%20int) лучше хотя б
Программистов сбивает с толку объявление массива int[] - массив примитивных типов, но это обычный объект не примитив, такой же как и String
У меня double[][] :) Ну что массив это объект я понимаю, я просто не знал нюансы Arrays.copyOf()
так нет тут никаких нюансов, хмык, делает ровно то, что обещает
Обсуждают сегодня