為什麼給long型別的變數初始化需要加L?

2021-10-24 05:37:19 字數 380 閱讀 4229

byte a =30;

short b = 30000;

int c= 200000000;

long d = 74000000000l;

等號後面的這些數字不僅僅只是數字,這些數字其實是常量。這些式子的真正含義是說將常量轉化為變數。

30,30000,200000000這三個數系統預設將他們作為int型別的常量,在對a,b,c三個數字賦值的過程也是將int型別常量轉換為byte,short,int(本身就是int)三種型別的過程。

而第四行的**,74000000000不加l的話,系統也是將它自動識別為int型別常量,這個數字又超出了int型別的範圍,因此會報錯。加上l後,這個數就是乙個long型的常量了,這個數沒有超出long的範圍,因此不會在報錯。

為什麼float比long型別的資料範圍大

float比long型別的資料範圍大。float 4個位元組 long 8個位元組 為什麼float的4個位元組比long型別的8個位元組的範圍大?因為整數與小數的底層儲存有點不同。相同點 它們都是用二進位制儲存的 不同點 小數先轉成二進位制,然後處理,然後儲存。符號位 其中最左邊的為符號位,0為正...

變數為什麼要進行初始化?

記憶體是在作業系統的統一管理下使用的!1 軟體在執行前需向作業系統申請儲存空間,在記憶體空閒足夠時,作業系統將分配一段記憶體空間並將外存中軟體拷貝乙份存入該記憶體空間中,並啟動該軟體的執行 2 在軟體執行期間,該軟體所佔記憶體空間不再分配給其他軟體 3 當軟體執行完畢後,作業系統將 該記憶體空間 注...

long和double型別變數的非原子性問題

32位的基本型別的操作都是原子操作,但是某些jvm對long和double型別的操作並不是原子操作,這樣就會造成錯誤資料的出現。這樣記憶體中的值變成執行緒1的高32位值和執行緒2的低32位值的組合,是個錯誤的值。書中還提到,上面出現問題的long和double變數是沒有宣告為volatile的變數。...