byte b = 11;如果我输入byte b = 512; 就会提示
Type mismatch: cannot convert from int to byte。
为什么是int转为byte呢?

解决方案 »

  1.   

    因为byte的范围是-128到127,你精512赋值给b的时候,超出了byte的范围,所以默认b为int型,然后做int-->byte的类型转换,但512不在-128与127之间,所以不能转换!
      

  2.   

    默认b为int型?这个表达不大对吧,应该是512是int型,b是byte型,int占4个字节,byte只占1个字节,你把4个字节的转化为1个字节必然要舍弃3个字节,这时显然就发生错误了
      

  3.   

    byte 的存储大小为2个字节(8bit) = 2的8次方 。
     存储大小为256 刚好是-128到正的127 。
      

  4.   

    不好意思, Byte 是一个字节(8bit)
      

  5.   

    515超过了byte的范围
    所以会报错
      

  6.   


    #9楼:byte 在计算时自动转为int我的问题是,如果定义
    byte b = 11; 这样的语句
    11是byte还是int?
      

  7.   

    byte b=11;这个语句中,如果只写个  11   那么系统就默认它是int型的,但是b是byte类型的,所以这句话是:int型的11自动转换成了byte型的11,但是如果这个数不是11,而且不在-128~127之间,那将会出现错误的结果了。
      

  8.   

    java代码中的自然数,编译的时候作为int处理。
      

  9.   


    如果定义byte b=11,11是整数,b是byte;byte/short/int/long都是整数类型,byte b=11判断的是11赋值给b是否byte的要求,11是整数,还有什么类型的区别吗?
      

  10.   

    前面各位都说了,byte的范围是-128到127,你将512赋值给b的,会超出了byte的范围。如果你还是想这么做,将512赋值给byte类型,就要强制类型转换
      byte b=(byte)512;
    你自己运行看看得到什么
      

  11.   

    byte adf = 11;
    float sadf =1.11;一个整数如果直接这样写的话就是默认为int
    浮点数就是默认为double类型所以会从int转向byte
      

  12.   

    我认为是这样的;
    11这样的数字在JAVA中都是int的。

    byte b = 11;
    的过程中,11自动从int转换为了byte类型,并赋给b。

    byte b = 256;
    的时候,由于256超过byte类型的最大值,导致自动转换失败,报出无法将int转换为byte的异常!不知道对不对,先不结了,等Master级别的人来给个说法。