当前位置: 首页 > 面试题库 >

为什么字节的总和是整数?

充小云
2023-03-14
问题内容

我有tyo字节变量

byte a = 3;
byte b = 4;

如果我将它们求和,则求和的值为整数。

byte z = a+b  //error, left side is byte, right side is integer

为什么a + b是int?


问题答案:

因为Java语言规范这么说

对操作数(第5.6.2节)执行二进制数值提升。

请注意,二进制数值升级执行值集转换(第5.1.13节),并且可能执行拆箱转换(第5.1.8节)。

数字操作数上加法表达式的类型是其操作数的提升类型。

并且,关于数字促销,

扩展原语转换(第5.1.2节)适用于转换以下规则指定的一个或两个操作数:

  • […]
  • 否则,两个操作数都将转换为type int

因此,byte价值被提升为int价值并相加。表达式的结果是提升的类型,因此是int

您可以简单地转换结果

byte z = (byte) (b + a);

但请注意上溢/下溢。



 类似资料:
  • 我有 tyo 字节变量 如果我对它们求和,sum的值是整数。 为什么 b 是整数?

  • 问题内容: 我正在编写一个OutputStream,只是在OutputStream接口中注意到了这一点, 该调用将一个字节写入流中,但是为什么要使用整数作为参数呢? 问题答案: 实际上,最近我一直在处理字节,它们可能很烦人。它们在丝毫挑衅的情况下会向上转换为整数,并且没有指定将数字转换为字节的功能- 例如,8l将为您提供一个长值8,但对于字节,您必须说(byte)8 最重要的是,除非您使用数组,否

  • 问题内容: 我正在尝试获取python 3.4中字节字符串的第一个字符,但是当我对其进行索引时,我得到了: 正如我期望的那样,这对我来说似乎并不直观。 我发现我可以得到我期望的价值,但是对我来说,这就像是一个hack。 有人可以解释为什么会这样吗? 问题答案: 该类型是Binary Sequence类型 ,并且明确记录为包含0到255范围内的整数序列。 从文档中: 字节对象是单个字节的不可变序列。

  • 我已经彻底研究了所有的问题,但没有一个直接适用于我的问题。我正在循环访问用户ID数组并匹配它们以从我的firestore DB中获得一个用户。我会毫无问题地返回结果,但当我将其存储在状态数组中并运行控制台日志时,我的状态数组总是空的。第一个console.log工作并显示DB的结果。 请帮帮忙。

  • 为什么第一个成功而第二个失败?人们可能期望它们产生相同的输出。

  • 问题内容: true如果传入的数字包含,则此方法返回1。 该+ “”零件的目的是 什么?如何使一个?(据我所知.contains只能使用Strings)。 问题答案: Anint是原始元素。在字符串中添加基元将执行该基元到a的隐式转换,String并将两个字符串加在一起。在这种情况下,将int转换并添加”“(empty String), 可以重写为: 要么 要么