簡體   English   中英

Java 將 long 轉換為 int

[英]Java converts long to int

以下代碼:

 import java.util.*;

 public class HelloWorld{

 public static void main(String []args){

    Scanner s = new Scanner(System.in);
    
    long N = s.nextLong();
    long[] arr = new long[N];
    
    System.out.println(N);
    
 }
}

收到此錯誤:

HelloWorld.java:12: error: incompatible types: possible lossy conversion from long to int long[] arr = new long[N];

據我了解代碼中不涉及 int ,任何人都可以解釋為什么會發生這種情況以及如何解決這個問題?

Java 中 arrays 的大小不能超過一個int的范圍,所以創建數組的 size 參數隱式是一個int N更改為int

來自JLS 15.10.1 Array Creation Expression (強調我的):

每個維度表達式都經歷一元數字提升(§5.6.1)。 提升的類型必須是int ,否則會發生編譯時錯誤。

Java 中的數組下標和大小必須始終為int ,因此在此表達式中new long[N]N轉換為int ,並且由於long的范圍比int更寬,因此這是一個必須明確完成的縮小轉換: new long[(int) N] 或者只是將N讀為intint N = s.nextInt()

long[] arr = new long[N];

在這一行中,您正在創建一個大小為 N 的數組,但 Java 中的數組大小只能是整數,這就是為什么它將 N 讀取為 int,如果您的意圖是創建 N 大小的數組,您應該將 N 讀取為 int

int N = s.nextInt();

java 中數組的最大長度為 2,147,483,647 (2^31 - 1),這是 int 的最大長度。 因此,數組隱含地可以具有 int 的最大值。 所以它不能接受長數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM