作者: 罗平 时间: 2013-3-25 11:25
类型转换
类型转换方向(存储空间较小的数据可以转换到存储间大的,反之不行)
Int I = 10;
Long l = I;//不丢精度。
Int b = 10;
Byte c = b;//错误,大转小
强制类型转换(大的转成小的,产生精度丢失的问题)
Int b = 10;
Byte c = (byte)b;//丢失精度。
自动类型提升(多种类型变量运算结果可能造成结果类型提升,编译强制提升类型)
Byte b =10;
Byte c =20;
Byte d = b+c//错误,int d
Byte d = (byte)b+c;
自动类型提升结论
AB其中有double, 运算结果为double
AB其中有float, 运算结果为float.
AB 其中有Long ,运算结果为long
其余情况为int.
其中你得知道byte short char int float double 的级别,而且要知道每种各自占多少位或字节 就是占用空间较小的和占用空间较大的
进行运算时,运算结果是占用空间较大那个类型。
结果:
283.5+515-126.3616
result=672.1384
第一个283.5是50*5.67 50虽然是byte,但是float比byte优先级高转为float。
515=5000*97取整 得到的,97是a的ASCII码。
126.3616=1024*0.1234得到 .1234就是0.1234
672.1384就是前面那个式子283.5+515-126.3616的结果。
作者: 芦子骐 时间: 2013-3-25 11:43
//声明变量
Byte b = 50;
char c = "a";
short s = 1024
int i = 50000;
float f = 5.67f;
double d = .1234
//(f*b) =>Byte 向 float转 = float类型
//+( i/c)=>char 向int 转 = int 类型
//-(d*s)=>short向double转 = double类型
double result = (f.b)+(i/c)-(d.s);
// 输出结果: 283.5 + 515(a在做运算的时候转换成ASCII值) - 126.3616
System.out.println((f.b)+(i/c)-(d.s));
//在输出result的时候,会把所有的类型都转成double类型 结果为:674.1384
System.out.println("result = "+result);