Java 中基元类型的转换规则
2022-09-02 10:01:45
在java中,
有积分类型(char
/short
/int
/long
/byte
)
有浮动类型(float
/double
)
有布尔类型(),而不是整数类型,不像C语言。boolean
问题:
-
是否有转换的通用规则(根据JLS)可以讨论哪种类型可以转换为另一种类型?出于常识,我知道,积分和浮动类型是不允许的
boolean
-
请帮我了解以下输出的原因:
/* * Casting rules for primitive types */ double aDoubleValue = 30000000000000000000.123438934; int doubleToInt = (int)aDoubleValue; //stores max value 2147483647, makes sense!! byte doubleToByte = (byte)aDoubleValue; //stores -1, why not 127? short doubleToShort = (short)aDoubleValue; // stores -1, why not 32767? long doubleToLong = (long)aDoubleValue; // stores 9223372036854775807, makes sense!! float doubleToFloat = (float)aDoubleValue; // stores 3.0E19, 3.0 x 10^19 max value of float char doubleToChar = (char)aDoubleValue; // what does this store?