public class Java{
public static void main(String[] args){
final byte x = 1;
final byte y = 2;
byte z = x + y;//ok
System.out.println(z);
byte a = 1;
byte b = 2;
byte c = a + b; //Compiler error
System.out.println(c);
}
}
如果一个表达式包含任何整数大小或更小的内容,其结果总是整数,即使两个字节之和适合一个字节。
为什么我们在一个字节中添加最后两个字节时会发生这种情况?没有编译器错误。
当我们在两个变量a之间进行任何算术运算时
max(int, type of a, type of b)
byte a=10;
byte b=20;
byte c=a+b(C.E )
说明:如上所述max(int,a型,b型)
max(int, byte, byte)
结果的类型为:int,find为int,但字节为必需
所以我们需要将类型转换为字节
byte a=10;
byte b=20;
byte c=(byte) (a+b);
byte z = x + y; // x and y are declared final
这里,由于x
和y
被声明为final
,因此RHS
上的表达式值在编译时是已知的,它固定在(1 2=3)
,并且不能改变。所以,你不需要显式地进行类型转换
byte c = a + b; // a and b are not declared final
然而,在这种情况下,a
和b
的值不是最终值。因此,表达式的值在编译时是未知的,而是在运行时计算的。所以,你需要做一个明确的演员阵容。
然而,即使在第一个代码中,如果ab
的值超出了-128到127的范围,它也将无法编译。
final byte b = 121;
final byte a = 120;
byte x = a + b; // This won't compile, as `241` is outside the range of `byte`
final byte b1 = 12;
final byte a1 = 12;
byte x1 = a1 + b1; // Will Compile. byte can accommodate `24`
从JLS 5.2任务转换
此外,如果表达式是字节、短、char或int类型的常量表达式(§15.28):-如果变量的类型是字节、短或char,并且常量表达式的值可在变量的类型中表示,则可以使用缩小基元转换。
简而言之,表达式的值(在编译时是已知的,因为它是一个常量表达式)可以用字节的变量类型来表示。
考虑一下你的表情
final byte x = 1;
final byte y = 2;
byte z = x + y;//This is constant expression and value is known at compile time
因此,由于求和适合字节,所以不会产生编译错误。
现在如果你这么做
final byte x = 100;
final byte y = 100;
byte z = x + y;// Compilation error it no longer fits in byte
我只知道几件事:(1),我正在为其编写适配器的硬件需要两个字节的CRC值。(2),CRC包的作者说明uint64可以显示为0xFFFF,即两个字节。(3)在线CRC计算器将这些值显示为两个字节,例如https://www.lammertbies.nl/comm/info/crc-calculation.html。其余的对我来说都是新的... 我刚刚发布了CRC包自述文件中的一个片段。由于uint6
使用formData.append(key, value)添加值后,console刚才的字段值发现值为null。 如上图所示: 第一次打印的payload值有个字段kb_id和doc_id,且2个字段都为String类型的值; 第二次打印的为添加到formData的kb_id字段,能展示正确的值; 第三次打印的为添加到formData的doc_id字段,此时打印的值为null; 这段函数是打断点一
看看以下片段: 结果如下: 无符号短常量
这有点难以解释,但基本上,我很难为一个数字的每一个数字添加单词“really”。 所以就像 “那是一个真的(真的数量取决于一个数字的位数)大数字!” 所以如果我把1563块印出来 这是一个真的真的真的真的很大的数字!
问题内容: 为什么我添加到ArrayList中对象只包N个最后一个元素? 问题答案: 此问题有两个典型的原因: 你存储在列表中的对象使用的静态字段 意外将同一对象添加到列表 静态场 如果列表中的对象将数据存储在静态字段中,则列表中的每个对象将看起来是相同的,因为它们具有相同的值。考虑下面的类: 在该示例中,由于声明了,因此在所有实例之间只有一个共享。(请参阅“了解班级成员”教程。) 如果使用以下代
问题内容: 我正在使用rsa密钥对要发送到服务器的长字符串进行加密(将使用服务器的公钥和我的私钥对它进行加密),但是它抛出一个异常,就像 我觉得到目前为止我还不了解rsa的工作原理一样(使用内置库是造成这种情况的原因)。 可以请一个人解释为什么抛出此异常。根本不可能发送加密的长字符串吗? 问题答案: RSA算法只能加密具有以字节为单位的RSA密钥长度的最大字节长度除以8减去11的填充字节的数据,即