Java Byte,当尝试拟合大于127的数字时会发生什么

时间:2017-01-09 04:10:21

标签: java int byte

我是Java新手,但我已经用其他语言编写了很长时间。今天我开始研究Java,我注意到一个看似有趣的异常。

当我声明一个字节变量并尝试存储小于-128或大于127的数字时,编译器会给我一个错误说

"类型不匹配:无法从int转换为字节"

现在我确切地知道为什么我可以存储例如130字节,但是如果我尝试将值分配给字节,为什么编译器会尝试从int转换为字节?

1 个答案:

答案 0 :(得分:0)

一个字节有8位,其范围是-2 8-1 到2 8-1 -1,即-128到127.

这基于以下等式:

-2 n-1 至-2 n-1 -1,

其中n是位数。

您使用的值超出范围,因此需要更大的数据类型,例如public static class UnityConfig { public static void RegisterComponents() { var container = new UnityContainer(); container.RegisterType<ITestService, TestService>(); ServiceUnityConfig.RegisterComponents(container); GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container); } } public static class ServiceUnityConfig { public static void RegisterComponents(UnityContainer container) { container.RegisterType<ITestRepository, TestRepository>(); } }

如果您跨越特定类型的范围,则会自动将其视为int数据类型。