- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
由于复合赋值和递增/递减运算符中的隐式转换,以下编译:
byte b = 0;
++b; b++; --b; b--;
b += b -= b *= b /= b %= b;
b <<= b >>= b >>>= b;
b |= b &= b ^= b;
并且由于自动装箱和自动拆箱,以下内容也可以编译:
Integer ii = 0;
++ii; ii++; --ii; ii--;
ii += ii -= ii *= ii /= ii %= ii;
ii <<= ii >>= ii >>>= ii;
ii |= ii &= ii ^= ii;
然而,以下代码片段的最后一行给出了编译时错误:
Byte bb = 0;
++bb; bb++; --bb; bb--; // ... okay so far!
bb += bb; // DOESN'T COMPILE!!!
// "The operator += is undefined for the argument type(s) Byte, byte"
谁能帮我弄清楚这里发生了什么? byte b
版本编译得很好,所以 Byte bb
不应该效仿并根据需要进行适当的装箱和拆箱吗?
那么有没有办法让复合赋值运算符与左侧的 Byte
、Character
和 Short
一起工作,或者是对于这些类型,它们简直是非法的(!!!)?
最佳答案
第§ 5.1.7 (Boxing)标准说:
From type boolean to type Boolean
From type byte to type Byte
From type char to type Character
From type short to type Short
From type int to type Integer
From type long to type Long
From type float to type Float
From type double to type Double
注意没有int to Byte
。当您执行 bb + bb
时,它会转换为 int + int,不会装回 Byte
。对于 byte
版本,int + int
直接转换回 byte
(缩小原始转换范围,§ 5.1.3),因此它是允许的。
关于java - 复合分配的自动(取消)装箱失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2704540/
请告诉我哪种算法适用于以下问题: 在给定的 3 个月内,我们的项目数量有限(通常 < 50)。每个项目都有一定的小时数。 我们在同一 3 个月内拥有有限数量的资源(通常 < 100)。 每个资源每个月
我了解装箱和拆箱是关于强制转换(将实型转换为对象...将对象转换为实型)的。但是我不明白MSDN对Nullable的评价。这是我不明白的文字: When a nullable type is boxe
据我了解,Java 具有装箱(堆)和未装箱(堆栈)变量,如果我将装箱类型分配给未装箱类型,反之亦然,则涉及 (n) (un) 装箱成本。 拆箱比分配一个新的装箱对象便宜吗?如果以只读方式使用,盒装对象
装箱/拆箱和类型转换之间有什么区别? 这些术语似乎经常可以互换使用。 最佳答案 装箱是指将不可空值类型转换为引用类型或将值类型转换为其实现的某个接口(interface)(例如 int 到 IComp
给定一组项目,每个项目都有一个值,确定要包含在集合中的每个项目的数量,以使总值小于或等于给定限制,并且总值尽可能大。 例子: Product A = 4Product B = 3Product C =
我正在编写一个一维装箱程序。我只想要一个可能的垃圾箱。所以它不包括很多垃圾箱,它是唯一的一个。该程序仅搜索四边形组,如果四边形组不等于搜索数量则爆炸。我想搜索大于四边形的每个可能的组。在示例中,我们有
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我最近的代码包括很多 boxing and unboxing ,因为我的许多变量都是在运行时解析的。但是我读到装箱和拆箱在计算上非常昂贵,所以我想问一下是否还有其他方法可以对类型进行装箱/拆箱?这甚至
我的作业是装箱问题,要求我展示如何从优化版本解决问题的决策版本,反之亦然。我知道要解决决策版本,您只需获取优化版本中使用的 bin 数量并将其与指定的最大 bin 数量进行比较,但我如何使用决策版本来
这是在不使用外部库的情况下在 Java 中装箱/拆箱多维原始数组的最有效方法吗? private Float[][] toFloatArray(float[][] values) { Float
我有一个头疼的问题,感觉类似于经典的装箱问题,但我无法确定。任何帮助表示赞赏... 问题: 我有一组尺寸相同的产品,但有不同颜色的款式和不同的订单数量要求。 我可以任意组合包装,但我只能有规定数量的不
我有一个由 df.column.value_counts().sort_index() 生成的 Pandas 系列。 | N Months | Count | |------|------| |
大家可以向我解释一下 new 的性质以及 Integer 的使用 Integer i = new Integer(-10); Integer j = new Integer(-10); Integer
如果我错了,请纠正我,将值类型装箱转换为引用类型,那么为什么以下代码给出 10 输出而不是 12? public static void fun(Object obj) { o
如果我理解 CLR 装箱和处理可空值的方式,如 Boxing / Unboxing Nullable Types - Why this implementation? 中所述,我仍然有一些困惑。例如,
我经常使用 div 来装箱信息,但我注意到包装箱有时可能不会填满空间,这会导致来自其他包装器的元素进入箱区域。 例如: my info1 my Info2 看看这个例子 .topic {
目前我有这门课 public class Currency { private int _Amount; public Currency(){... } public Curr
我收集了 43 到 50 个数字,范围从 0.133 到 0.005(但大部分偏小)。如果可能的话,我想找到 L 和 R 之间总和非常接近的所有组合。* 蛮力法需要 243 到 250 步,这是不可行
我试图从性能的角度了解两种解决方案中的哪一种是首选。比如我有两段代码: 1) 装箱/拆箱 int val = 5; Session["key"] = val; int val2 = (int)Sess
通过 C# 在装箱/拆箱值类型上从 CLR 中提取 ... 关于装箱:如果可为空的实例不是null,CLR 会从可为空的实例中取出值并将其装箱。换句话说,值为 5 的 Nullable 装箱到值为
我是一名优秀的程序员,十分优秀!