我有 tyo 字节变量
byte a = 3;
byte b = 4;
如果我对它们求和,sum的值是整数。
byte z = a+b //error, left side is byte, right side is integer
为什么 b 是整数?
因为 Java 语言规范是这么说的
对操作数执行二进制数字提升(第5.6.2节)。
请注意,二进制数字提升执行值集转换(§5.1.13),并可以执行拆箱转换(§5.18)。
数值操作数上的加法表达式的类型是其操作数的提升类型。
关于数字推广,
加宽基元转换 (§5.1.2) 适用于转换以下规则指定的任一操作数或两个操作数:
因此,字节
值被提升为 int
值并相加。表达式的结果是升级的类型,因此是 int
。
您可以简单地投射结果
byte z = (byte) (b + a);
但要小心溢位/下限溢位。
问题内容: 我有tyo字节变量 如果我将它们求和,则求和的值为整数。 为什么a + b是int? 问题答案: 因为Java语言规范这么说 对操作数(第5.6.2节)执行二进制数值提升。 请注意,二进制数值升级执行值集转换(第5.1.13节),并且可能执行拆箱转换(第5.1.8节)。 数字操作数上加法表达式的类型是其操作数的提升类型。 并且,关于数字促销, 扩展原语转换(第5.1.2节)适用于转换以
问题内容: 我正在编写一个OutputStream,只是在OutputStream接口中注意到了这一点, 该调用将一个字节写入流中,但是为什么要使用整数作为参数呢? 问题答案: 实际上,最近我一直在处理字节,它们可能很烦人。它们在丝毫挑衅的情况下会向上转换为整数,并且没有指定将数字转换为字节的功能- 例如,8l将为您提供一个长值8,但对于字节,您必须说(byte)8 最重要的是,除非您使用数组,否
问题内容: 我正在尝试获取python 3.4中字节字符串的第一个字符,但是当我对其进行索引时,我得到了: 正如我期望的那样,这对我来说似乎并不直观。 我发现我可以得到我期望的价值,但是对我来说,这就像是一个hack。 有人可以解释为什么会这样吗? 问题答案: 该类型是Binary Sequence类型 ,并且明确记录为包含0到255范围内的整数序列。 从文档中: 字节对象是单个字节的不可变序列。
为什么第一个成功而第二个失败?人们可能期望它们产生相同的输出。
答:[65,65,65,A]但我料到了[65,A]
问题内容: 给出以下代码: (第4版记入:casablanca) 您认为将char转换为int 的“ 最佳方法 ”是什么?(“ 最佳方式 ”〜= 惯用方式 ) 我们不是在转换char的实际数值,而是在转换表示形式的值。 例如。: 问题答案: 怎么样