簡體   English   中英

將int轉換為long

[英]Casting an int into a long

我有一個關於在java中從int轉換為long的問題。 為什么浮標沒有問題:

float f = (float)45.45;//compiles no issue.
float f = 45.45f; //compiles no issue.

但是對於長型,它似乎是一個問題:

    long l = (long)12213213213;
    //with L or l at the end it will work though. 
    long l = (long)12213213213L;

似乎一旦編譯器因超出范圍的問題而通知錯誤,它就會在那里阻塞而不檢查程序員可能已經計划的任何可能的轉換。

你對它有什么看法? 為什么有任何特殊原因?

提前致謝。

但是對於長型,它似乎是一個問題:

那是因為沒有L12213213213是一個int ,並且不long 由於該值超出了int的范圍,因此您會收到錯誤。

嘗試類似的東西: -

System.out.println(Integer.MAX_VALUE);
System.out.println(12213213213L);

你會明白的。

float的情況而言: -

float f = (float)45.45;

45.45是一個double值,適合double的大小。 因此,編譯器將沒有這一問題,然后它會執行一個castfloat

似乎一旦編譯器因超出范圍的問題而通知錯誤,它就會在那里阻塞而不檢查程序員可能已經計划的任何可能的轉換。

究竟。 編譯器首先檢查一個有效值,這里是int ,然后才能通過強制轉換操作進一步移動。

所以,基本上在longint情況下: -

long l = (long)12213213213;

你沒有得到錯誤,因為中cast操作,而是因為你的numeric literal是不能表示為int 因此,編譯器沒有獲得有效值,以執行強制轉換操作。

Java不會考慮您只對值進行的操作。 例如,如果您有一個太大的值,那么將它分配給double是沒關系的,則將long值首先檢查為有效。

暫無
暫無

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

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