【问题标题】:Java - Swapping two different types of multidimensional arraysJava - 交换两种不同类型的多维数组
【发布时间】:2016-06-18 18:15:30
【问题描述】:
我可以将一个字符类型的多维数组与另一个整数类型的数组交换吗?
这个问题是在 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
【问题讨论】:
标签:
java
php
multidimensional-array
swap
【解决方案1】:
不,这实际上是不可能的。整数数组是整数数组,根据定义可以不包含字符。您将永远无法将“A”存储为 int,因为它不是。
另一方面,可以将整数转换为字符,反之亦然。当您将 char 转换为 int 时,您只会在内部获得代表 char 的数字,而当您将 in 转换为 char 时,您将获得由 int 表示的 char。
连同将您从其中一个数组读取的任何元素转换回您希望它具有的类型,这可以作为一种 hack 来完成您想要做的事情。我不明白你为什么想要它。
【解决方案2】:
从技术上讲,您可以使用对象数组并使用包装类,例如 Integer[] 和 Character[]。
如果您想使用真正的原语,则无法做到这一点,因为它们是按值复制的,而不是引用,并且这些值在内存中可以具有不同的大小。例如,整数将是 short 大小的两倍,因此您不能将它放入为较小数据类型保留的内存中。正如 S.Joshi 的回答中提到的,它适用于整数和字符,但你必须来回转换。