public class Main {
public static void main(String[] args) {
byte b;
b=(byte) (127+3);
System.out.println(b);
// why?
// 127
// 原码和补码 01111111
//3
// 补码和原码 00000011
// 127+3底层都是补码相加
// 结果:10000010-得出的是原码还要转换为补码(当然正数补码就是原码)
// 11111110 对应 -126
b+=1;//为什么这个不报错?
//因为+=底层是自动进行类型转换,它是找到b的地址,然后吧对于里面的数据变成运算后的结果
//b=b+1;//为什么这个错误?,因为+是一个整体,左边整体会向大的类型(int)转换
//所有右边的是一个int,int不能直接赋给byte类型的b需要强转
//而且= +效率比+=低,因为它需要先存储我们+的结果再赋值
//关于>>和<<为什么比/2和*2效率高的原因也是这个
int i=1,j=2,k=3;
boolean a;
a=i>j&&k++>0;
System.out.println(k);//k的值为3不变,因为前面的i>j已经错了,所以不会运行表达式的后半部分
//就是没有执行k++
}
}
02-27
1674
11-14
396
07-12
1088