为什么我必须byte在方法参数为0 时转换0 byte?
例:
void foo() {
bar((byte) 0);
}
void bar(byte val) {}
Run Code Online (Sandbox Code Playgroud)
我知道如果参数是long类型我不必抛出它,所以我猜Java认为数学整数是整数运行时.
它不会阻止使用byte/short吗?
文字0是一个整数,并且没有自整数 - >字节的自动转换,因为可能会丢失精度.例如,(byte)1024超出有效范围.也许编译器可能更聪明,并允许这个小整数文字,但它不...
扩展到long是可以的,因为每个整数都可以很长而不会丢失信息.
是的,出于这个原因,我几乎不会在我的代码公开的任何API中使用short或byte(尽管它适用于中间计算)