簡體   English   中英

基本值的轉換或數據類型轉換

[英]casting or data type conversion of primitive values

a)如果我在Java中編寫類似的內容

short a = 15
short b = 3;
short c = a * b;//will not compile

I know it will not compile because short values are automatically
promoted to int with the resulting value of type int so this will compile:

int d=a*b ; //compile

B)如果我做長數的乘法,例如:

long a=15;
long b=3;
long c=a*b;//will compile
int d=a*b;//will not compile

我假設長整數值不會因為int較小而被提升為int,而且在我編寫時

長a = 15;

Java會將字面量解釋為int,因為賦值中不存在帶15的“ l”,如果Java將其解釋為int,為什么它不能將解釋為int數據類型的值相乘

int d=a*b; 

為什么要給出錯誤?

在對長變量進行任何算術運算的情況下,java是否不考慮int值?

為什么Java允許long a = 15; 當我無法對它進行任何操作時,將其解釋為int。

這是由於java向上轉換而不向下轉換的事實。 通過增加空間,它將轉換成更大的東西,但是通過減少空間,您可能會丟失數據,因此java不會這樣做。 這樣會使您的小數(例如15)變成一個長整數,但是如果您從不填充長時間使用的空間,這樣做會浪費內存。

暫無
暫無

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

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