[英]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]
, n
和2
均为数组尺寸,因此它们应为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.