在Java中将int[]数组转换为short[]数组

在Java中将int[]数组转换为short[]数组,java,arrays,Java,Arrays,我有一个int数组,我为它分配了100个元素的空间。在短[]中还有另一个数组。如何将inInt[]中的转换为inShort[] int inInt[] = new int[100]; short inShort[]; 是否有必要为短[]中的分配新内存,或者有一种方法可以强制转换为短[] int inInt[] = new int[100]; short inShort[]; short inShort[]=新的short[100]; 对于(int i=0;i

我有一个
int
数组,我为它分配了100个元素的空间。在短[]中还有另一个数组
。如何将inInt[]
中的
转换为inShort[]

int inInt[] = new int[100];
short inShort[];
是否有必要为短[]中的
分配新内存,或者有一种方法可以强制转换为
短[]

int inInt[] = new int[100];
short inShort[];
short inShort[]=新的short[100];
对于(int i=0;i<100;i++)
{
inShort[i]=(短)insint[i];
}

但是,如果int超出short的范围(即小于-32768或大于32767),则很可能会溢出short。实际上很容易使short溢出,因为int的范围从-2147483648到2147483647。

这可能会导致信息丢失,因为int类型比short使用更多内存。 因此,正如Lirik所说,你可以使用他的方法,直到你不泄露信息为止。
为此,您必须确保要转换的整数在short type的范围内。

我认为您必须在转换之前为inShort[]分配内存
但您可能不需要转换。如果应用程序中的内存非常重要,或者您不想在转换后释放inInt[。
只需在带有“(short)inInit[x]”的表达式中使用inInt[]的元素

如何将inInt[]转换为inShort[]

您必须创建一个大小合适的短裤数组,并复制内容。虽然有复制数组的实用方法,但我不知道有哪种方法会同时复制一个原语数组并转换值。因此,您很可能需要使用显式的
for
循环进行元素复制

是否需要为inShort[]分配新内存

对。需要一个新数组。。。除非现有的数组类型和大小正确,可以重复使用

或者有一种方法可以让我投到inInt[]

不可以。不能将基元类型的数组强制转换为其他基元类型的数组。Java语言不允许这样做



(作为记录,这适用于每一个原语类型的Java数组。)

首先,当您试图将较大的类型保存为较小的类型时,会收到一条编译器警告。其次,是的,您必须创建一个short类型的新数组,以便可以将值从一个数组复制到另一个数组。据我所知,您不能重新键入数组。假设有一种情况,我需要与此正好相反,即我有一个短[]数组,我需要转换为int[]数组,我需要遵循类似的规则吗procedure@user-是的,你会这么做的。