什么叫降至类型转换?就是说你超过我得范围了,但是我还是要用你,那我就把你超过我得范围的东西全都扔掉!
那么现在来看,int i=257; double d = 323.142; byte a,b;a=(byte)i; b = (byte)d;
i在内存中的表现形式: 0000-0000 0000-0000 0000-0001 0000-0001,而byte(一个字节八位)的范围是-128-127,那么这257明显超过127了吧,那么没办法,我只能用最低8位了,所以我就把你的最低8位给截取了拿到的是不是就是 0000-0001,显然这应该是1吧,就是这么来的;
至于b其实道理是一样的,先去掉小数,double是8个字节,但是我只能用整数的最后8位,那截取的道理和i是一样的。
...0000-0000 0000-0000 0000-0001 0100-0011,那最低8位就是0100-0011,对应的二进制自然是67了呀! |