不同的基本数据类型转换
在计算数据的时候,往往会有不同的数据类型进行转换,不同的数据类型计算的时候就会发生整型提升,即所占字节数小的会提成成所占字节数大的和精度小的会提升成精度大的。
整形数据类型之间的转换
int a=10;
long b=20;
int c =a+b;
由于java的安全性,在编译的时候会进行报错。
是因为long占8个字节而int之占4个字节,所以a发生了整形提升,即a+b其实是两个long类型的数据相加放到int类型数据当中,所以会出错。正确的做法是将a+b放到与之相对应的long类型数据中
int a=10;
long b=20;
long c=a+b;
再看一个例子
byte a=10;
byte b=20;
byte c=a+b;
都是byte类型,为什么编译时候也会出错呢?
以为cpu在读取数据时候是4个字节为单位进行读取,即牺牲空间来换取时间的做法。byte只占用一个字节,所以在读取的时候发生了整型提升变成了int类型,即a+b是两个int类型数据相加放到byte类型中,所以编译时会出错。