Java中的数组索引属性

时间:2015-08-17 18:54:46

标签: java

我是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));
    }

   }

3 个答案:

答案 0 :(得分:0)

需要成为int。 long,short,byte,float是 其他数据类型 。可以对您提供的数据类型进行隐式或显式转换,但是数组的索引只能由javac用int构建。

数组对象包含许多变量。变量的数量可以为零,在这种情况下,该数组被称为空。数组中包含的变量没有名称;相反,它们由使用非负整数索引值的数组访问表达式引用。这些变量称为数组的组件。如果一个数组有n个组件,我们说n是数组的长度;使用0到n - 1之间的整数索引来引用数组的组件。

Oracle Docs

答案 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)。在句子上,intslongs表示整数,但“较大”的整数类型不会自动转换为“较小”的整数类型。