我是Java编程新手,我正在使用数组。在数组中 index需要是一个整数,它不允许浮点数或双精度数,所以我使用long数据类型作为索引,它给出了错误。而当我使用byte和short和Int时它起作用了。我想知道,因为错误是"可能有损转换从long到int" 是这样的,索引中只允许使用int,因为byte和short的大小很小,因为它的工作原理(自动升级)和long大于int所以它给出了错误(没有自动depromotion)plz帮助
import Java.util.*;
class Demo{
public static void main(String args[]){
long n=5;
int a[]=new int[n]; //error possible lossy conversion from long to int
System.out.println(Arrays.toString(a));
}
}
答案 0 :(得分:0)
需要成为int。 long,short,byte,float是 其他数据类型 。可以对您提供的数据类型进行隐式或显式转换,但是数组的索引只能由javac用int
构建。
数组对象包含许多变量。变量的数量可以为零,在这种情况下,该数组被称为空。数组中包含的变量没有名称;相反,它们由使用非负整数索引值的数组访问表达式引用。这些变量称为数组的组件。如果一个数组有n个组件,我们说n是数组的长度;使用0到n - 1之间的整数索引来引用数组的组件。
答案 1 :(得分:0)
你不能将long转换为int或者不能将long转换为int。 您可以做的唯一转换是
• byte to short,int,long,float或double
• short to int,long,float或double
• char to int,long,float或double
• int to long,float或double
• 长期浮动或加倍
• 浮动加倍
由于你有int数组,你可以存储int,short和byte数据类型值
答案 2 :(得分:0)
简而言之,这是因为语言的设计方式。如果您查看Java语言规范的section 10.7,您会注意到数组的长度定义为int
(小于long
)。在句子上,ints
和longs
表示整数,但“较大”的整数类型不会自动转换为“较小”的整数类型。