Могу ли я поменять один многомерный массив одного символьного типа на другой массив целочисленного типа?
Эта проблема была задана мне во время интервью с разработчиком PHP. Так как в PHP нет типов данных, только переменные $, так что я думаю, что это возможно. Я хочу знать, возможно ли это на Java.
int A[][]=new int[4][4];
char B[][]=new char[4][4];
A=|1234
|5678
|9 10 11 12
|13 14 15 16
B=|ABCD
|EFGH
|IJKL
|MNOP
result
A=|ABCD
|EFGH
|IJKL
|MNOP
B=|1234
|5678
|9 10 11 12
|13 14 15 16
Нет, это буквально невозможно. Целочисленный массив — это массив целых чисел, который по определению может не содержать символов. Вы никогда не сможете хранить «А» как int, потому что это не так.
С другой стороны, можно привести целые числа к символам и наоборот. Вы просто получите число, представляющее символ изнутри, когда вы приведете к типу int, и вы получите символ, представленный int, когда вы приведете к типу.
Вместе с приведением любого элемента, который вы читаете из одного массива, к тому типу, который вы хотите, он может работать как хак, чтобы делать то, что вы пытаетесь сделать. Я не понимаю, почему вы этого хотите, хотя.
Технически, вы можете использовать массив Objects и использовать классы-обертки, такие как Integer [] и Character [].
Если вы хотите использовать реальные примитивы, то сделать это невозможно, поскольку они копируются по значению, а не по ссылкам, и эти значения могут иметь разные размеры в памяти. Например, целое число будет в два раза больше короткого, поэтому вы не можете поместить его в память, зарезервированную для меньшего типа данных. Как упомянуто в ответе С.Джоши, это работает для целых чисел и символов, но вам придется читать туда-сюда.