我学习Java并且不太了解它。 从较大的数据类型转换为较小的数据类型的公式是什么?例如:
byte x=10;
long y=250;
x=(byte)y;
System.out.println(x);
编译后给我-6。 它有什么用途?
答案 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。
简短回答:将较大的数据类型转换为较小的数据类型会给您带来愚蠢的结果。如果没有重大的错误检查,请不要这样做。