我是Java新手,但我已经用其他语言编写了很长时间。今天我开始研究Java,我注意到一个看似有趣的异常。
当我声明一个字节变量并尝试存储小于-128或大于127的数字时,编译器会给我一个错误说
"类型不匹配:无法从int转换为字节"
现在我确切地知道为什么我可以存储例如130字节,但是如果我尝试将值分配给字节,为什么编译器会尝试从int转换为字节?
答案 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
数据类型。