java里面高精度向低精度转换,需要进行强制转换,转换后数字会按照各自所占的字节数进行截取。一个字节占8位。例如
short a=128;
byte b=(byte) a;
这个short占连个字节,byte占一个字节,128的二进制就是0000000010000000,转为byte就是截取后八位10000000,就是-128.
short s1=1;
s1=(short)(s1+1);
这种s1+1的时候就会把s1变成int类型,如果不进行强制转换,就会报编译错误
s1+=1;
如果是这样,java对这种有专门的运算符优先级,就不会编译报错。
前置++i,代表不管有没有其他操作都+1,i++要当前面操作执行完毕才进行+1,按从左到右顺序
i=1;
System.out.println(i+++i++);
这个结果i=3,i++先不执行,接着执行++i,此时i等于2,接着执行第二个i++,此时i=3,程序计算结束。