繁体   English   中英

如何在Java中声明要长整型的数组?

[英]How to declare array to type long in java?

我正在尝试执行以下代码:

long n = in.nextLong();
    long k = in.nextLong();
    long[][] arr = new long[n][2];

但是编译器显示此错误-

Main.java:9: error: incompatible types: possible lossy conversion from long to int


long[][] arr = new long[n][2];

有人可以解释为什么会这样吗?

new long[n][2]n2均为数组尺寸,因此它们应为int类型,而不是long类型。 即使数组本身包含long值。

将您的第一行代码更改为

int n = in.nextInt();

您收到的错误是因为您尝试使用long作为整数。 数组的索引始终是整数。 Java阻止您将long信息转换为int信息,因为您要删除32位信息。

数组使用整数作为索引。 因此将long转换为int以便用作索引。 因此,显示错误的原因是您输入的内容可能比int所能容纳的要大,而在转换为int时会导致信息丢失。

Main.java:9: error: incompatible types: possible lossy conversion from long to int

同样,由于您不能创建足够大的数组以使其超出int的范围以对其进行索引,因此将int选作索引数组的数据类型。

数组索引始终为int,并且您尝试将long分配给index,因此会出现错误,long拥有8个字节,而int拥有4个字节,因此,如果尝试将long转换为int,则可能会损失精度,并且编译器不会允许这个。 默认情况下,任何数字值在java中都被视为int,将int值用于数组索引,在您的代码中简单类型强制转换应该可以尝试

long[][] arr= new long [(int)n][2];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM