class Test4
{
 public static void main(String args[]){
  int max=Integer.MAX_VALUE;
  System.out.println("整型最大值:"+max);
  System.out.println("整型最大值+1:"+(max+1));
}
}得出的结果整型最大值:2147483647
整型最大值+1:-2147483648我写的public class Test4
{
public static void main (String args[]){
  byte max=Byte.MAX_VALUE;
  System.out.println("最大值:"+max);
  System.out.println("最大值+1:"+(max+1));
}
}
得出的结果如下:最大值:127
最大值+1:128
其中,“最大值+1”=128,换算为二进制为:10000000,为什么不是显示的-128,求解释,谢谢大家!

解决方案 »

  1.   

    呃  我说错了 我试验了一下 是自动帮你转换类型了
    1是int的 自动转了 无视我上面的贴
    public class Test4 {    public static void main(String args[]) {
            byte max = Byte.MAX_VALUE;
            System.out.println("最大值:" + max);
            System.out.println("最大值+1:" + Byte.toString((byte) (max + 1)));
        }
    }
      

  2.   

    两个整形的值相加,向上转成int了.
      

  3.   

    经典问题:
    short i=10;
    i=i+1;
    i+=1;
      

  4.   

    首先byte8位、int32位,第一位都是符号位。
    byte 范围:-128~127 二进制:11111111~01111111 
    byte+1 因为1 是32位整型,所以是0000000000000001
    byte的最大值:127,就是01111111
    这样01111111+00000000 00000001=00000000 100000000
    转换成二进制:128,明白?一般来说基本数据类型都是低位向高位转换,你掌握了java基本数据类型和计算机数据转换的基本原理,这个就不难理解了。