为什么Java API会使用int,何时short甚至byte是足够的?
示例:DAY_OF_WEEK类中的字段Calendar使用int.
如果差异太小,那么为什么存在这些数据类型(short,int)?
我试图在java中做一些按位操作
我有2个数组:
byte[] bitArray;
final byte [] bitMask = {1,2,4,8,16,32,64,-128};
Run Code Online (Sandbox Code Playgroud)
然后我尝试在|一个字节中的bitArray一个字节mask.
bitArray[i] = bitArray[i] | bitMask[j]
Run Code Online (Sandbox Code Playgroud)
问题是我遇到了编译器错误.
"错误可能丢失精度"找到int所需的字节
问题是如何解决它?
考虑这个代码:
val x1: Byte = 0x00
val x2: Byte = 0x01
val x3: Byte = x1 + x2;
Run Code Online (Sandbox Code Playgroud)
这会产生编译错误,因为添加 2 Bytes的结果是Int.
为了解决这个问题,我需要手动将结果转换回一个字节:
val x3: Byte = (x1 + x2).toByte()
Run Code Online (Sandbox Code Playgroud)
这是非常违反直觉的。为什么算术运算符会这样工作?