3 java int byte primitive-types
你不能把大价值放在小杯子里.嗯,好的,你可以,但你会失去一些.正如我们所说,你会得到溢出.编译器试图帮助防止这种情况,如果它可以从你的代码中告诉你某些东西不适合你正在使用的容器(变量).
例如,
int x= 24;
byte b= x;
// Won't work!!
Run Code Online (Sandbox Code Playgroud)
现在字节的范围是-128到127.现在,我的问题是为什么这不起作用?毕竟,xis 的值是24,并且24肯定足够小以适应字节(可能是一个非常新手级别的问题,但我真的很困惑这个概念).
你知道这byte b= x;相当于byte b= 24;,并且智能编译器也可以告诉你,但是以非常精确的方式指定Java以确保所有编译器都做同样的事情,并且它不允许编译器注意到这种等价以便接受或拒绝该计划.(尽管如此,他们可以使用它来进行优化.)所有编译器都应该知道表达式x是静态类型int,因此不能保证byte b= x在范围内分配值byte.
相反,您必须编写byte b = (byte) x,明确地将表达式转换("转换")x到类型byte.
(这是静态类型的一般原则 - 对于任何类型系统,类型系统都会拒绝一些其他正确的程序.在这种情况下,类型系统不允许您int在byte没有强制转换的情况下分配.)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |