我有一个int
数组,我已经为100个元素分配了空间。还有另一个数组inShort[]
。如何将inInt[]
转换为inShort[]
?
是否有必要为inShort[]
分配新内存,或者我可以通过哪种方式转发inInt[]
?
int inInt[] = new int[100];
short inShort[];
答案 0 :(得分:11)
short inShort[] = new short[100];
for(int i = 0; i < 100; i++)
{
inShort[i] = (short)inInt[i];
}
但是,如果int超出空头的范围(即小于-32,768或大于32,767),则很可能溢出空头。实际上很容易溢出空头,因为int的范围从-2,147,483,648到2,147,483,647。
答案 1 :(得分:1)
我认为你必须在转换之前为inShort []分配内存。
但你可能不需要转换。如果内存在您的应用程序中至关重要,或者您不希望在转换后释放inInt []
只需在带有“(short)inInit [x]”
答案 2 :(得分:1)
如何将inInt []转换为inShort []?
您必须创建适当大小的短裤数组,然后复制内容。虽然有复制数组的实用方法,但我不知道会复制基元数组并同时转换值。因此,您很可能需要使用显式for
循环进行元素复制。
是否有必要为inShort [] ....
分配新内存
是。需要一个新的数组......除非你有一个正确的类型和大小的现有数组可以重复使用。
或者我可以通过哪种方式投射到inInt []?
没有。您不能将基本数组类型转换为不同的基本数组类型。 Java语言不允许使用它。
(并且对于记录,这适用于每个Java基本原型类型。)
答案 3 :(得分:0)
这可能导致信息丢失,因为与short类型相比,int类型使用更多内存。 正如 Lirik 所说,你可以使用他的方法,直到你没有丢失信息。 为此,您必须确保要转换的整数在短类型范围内。