将字节转换为Int,Short to Long ......等

时间:2014-10-30 18:20:10

标签: java

我学习Java并且不太了解它。 从较大的数据类型转换为较小的数据类型的公式是什么?例如:

byte x=10;
long y=250;
x=(byte)y;
System.out.println(x);
编译后

给我-6。 它有什么用途?

3 个答案:

答案 0 :(得分:1)

你得到-6因为你做了一个长到一个字节而且long中的值对于字节来说太大了。尝试将一个字节转换为long!

一个字节的范围是-128到127.长度从-2 ^ 63到2 ^ 63-1。你以这种方式得到了转变,你已经得到了溢出。

答案 1 :(得分:0)

一个字节最多只能存储256个值,但因为java是有符号的,java中的一个字节存储在-128到127之间。

你的250的值超过127,所以它包围了负数。

将较小的数据类型转换为较大的数据类型的公式是什么?

我认为你的变量倒退了

y=x;

您不需要进行投射,因为一个字节会自动扩展为长

答案 2 :(得分:0)

byte数据类型是带符号的1字节值,可以取值-128到127.当您将250l转换为byte时,Java会查看二进制值11111010并推动byte,但因为第一位是1,它被解释为负值。如果您通过2补码运行11111010,则会得到110或6,因此11111010为-6。

简短回答:将较大的数据类型转换为较小的数据类型会给您带来愚蠢的结果。如果没有重大的错误检查,请不要这样做。