原始值的转换或数据类型转换

时间:2016-07-21 20:58:00

标签: java types type-conversion

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,因为没有' l'如果java已将其解释为int,那么为什么它不能将其解释为int数据类型

int d=a*b; 

为什么会出错?

如果对长变量进行任何算术运算,java是否不考虑int值?

为什么java允许long a = 15;当我无法对其进行任何操作时,将其解释为int。

1 个答案:

答案 0 :(得分:2)

这是因为java向上转换但不向下转换。它会通过添加空间转换为更大的东西,但通过减少空间可能会丢失数据,因此java不会这样做。它将你的小数字像15一样长,但如果你永远不会填补空间长期使用,这是浪费内存。