JAVA基础 byte类型的问题

我哭了谁来疼 2012-10-30 09:37:33
public static void main(String args[]){
byte A=(byte)=4096;
system.out.println(A);\\为什么A的值是10
}
...全文
302 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
呼啸 2012-10-31
  • 打赏
  • 举报
回复
4096(10进制)=1000000000000(2进制)。
当强制转换为Byte型时,byte为1个字节,8位。而4096转换为byte后,由于超出8位,会发生截取。只要最末尾8位。因此输出0.

public class test {
public static void main(String args[])
{
byte A =(byte)4096; //把4096前的赋值号去掉,强制类型转换不需要赋值号
System.out.println(A);
}
}
isea533 2012-10-31
  • 打赏
  • 举报
回复
public static void main(String[] args) {
byte A=(byte)4096;
System.out.println(A);
}
BadPattern 2012-10-31
  • 打赏
  • 举报
回复
4096为正溢出,需要加上n*负上限来保证不会溢出,这里负上限为-128,即4096一直加上-128直到得到的值在-128到127之间,算出来结果为0
JIANGLU22 2012-10-31
  • 打赏
  • 举报
回复
byte取值范围不够清晰,还有类型转换
小驴识途 2012-10-31
  • 打赏
  • 举报
回复
是0啊,
4096 => 10000000000 (2进制)

byte是8位,所以保留后8位是00000000 => 0 啊
zly361814478 2012-10-30
  • 打赏
  • 举报
回复
代码有误, 为0
猪思马记 2012-10-30
  • 打赏
  • 举报
回复
楼主的 代码错了哦
public static void main(String[] args) {
byte A =(byte)4096;//将4096 int强制转换成byte类型
System.out.println(a);//输出为0
}
因为byte的取值范围是-128~127 即256一个循环
4096=256*16
则4096在byte类型中其实就相当于0 强转成byte类型过后为0再赋值给A 所以A的值为0
输出应该是0 楼主试试看
Fenglee2008 2012-10-30
  • 打赏
  • 举报
回复
挣点分吧.
zhaoming262350 2012-10-30
  • 打赏
  • 举报
回复
定义了一个 byte类型的变量 A,byte的取值范围是-128—127
nmyangym 2012-10-30
  • 打赏
  • 举报
回复
楼主上面贴的代码有错误,我改了后是 A=0. 楼主怎么会是10呢?
Mr_sunboy 2012-10-30
  • 打赏
  • 举报
回复
byte 最大127 最小-128
所以128 byte值就是-128 因此值会在-128-127之间游荡..

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧