如题

解决方案 »

  1.   

    如果是32位的,那么下面的:
                        byte b=3;又是怎么赋值成功的呢?
      

  2.   

    <<深入java虚拟机>>有详细解释
      

  3.   

    3都是int的,,赋值给byte的时候截断为8位。而3L就是64位了。
      

  4.   

    楼上的说的不对,常量怎么有int型.退一步说,3如果是int型,byte b=3;应该报错,因为目标类型的取值范围小于右边的范围
      

  5.   

    java 中一个整型(int)是以4个字节表示的. 一个空对像是一个32位的指针.
    java 对字节的按排是高位在前,低位在后.比如一个短整型(short)2个字节也就是说2*8=16位.如果像前面说的byte b = 3,实际上在符值的时候已经把高位截掉了.因为1个字节是8位,能存放不超过255的数字,所以尽管3为整型,高位是没有数据的全部为0,所以截掉并不影响结果,但如果附值超过255时就会出现溢出,而在java中,系统是会自行检查,是不能附值的.编译也通不过.
      

  6.   

    哦,也就是说java中,系统在进行诸如  byte b=3;这种赋值是会自动检查,如果可以赋值就截断然后再赋值,超出了127就溢出处理?