java基本数据类型转换

来源:百度知道 编辑:UC知道 时间:2024/06/17 04:58:05
int a=97;
byte b1=(byte)128;
byte b2=(byte)(-129);
System.out.printf("%c,%d,%d",a,b1,b2);

上述语句的输出结果为 a,-128,127
第一个a很容易理解,后面的-128和127课本上说超出变量取值范围,但是我还是不明白,java高手能帮我从0具体解释一下么?我初学。

由于你用了 byte b1=(byte)128;
强制类型转换来赋值 所以多出去的部分就会被强制去掉
int型的128 在用内存里用2进制的写法是
00000000 00000000 00000001 00000000
由于你强制类型转换了所以在内存里就变成了
1000000 转换成10进制就是 -128
你去把位运算那部分好好看看就知道了
.但是这些个内容属于基础中的基础 但是实际应用可以说基本没有

因为byte是一个字节即8位,范围是-128到127
128越最大界,就自动转化为最小的-128
而-129越最小界,就变成了最大的127
这里牵扯到数据在计算机中的存储方式,有点麻烦
楼主只要知道范围,不要越界就OK了