假设我有
int a = 100;
int b = 100;
Integer c = (Integer) a;
Integer d = (Integer) b;
自动装箱不需要铸造。您看到引用相等的原因是自动装箱在内部调用integer.valueOf()
,后者缓存某些值:
此方法将始终缓存在-128到127(含)范围内的值,并可能缓存此范围之外的其他值。
主要内容:装箱和拆箱,包装类的应用在 Java 的设计中提倡一种思想,即一切皆对象。但是从数据类型的划分中,我们知道 Java 中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够称为对象呢?于是 Java 为每种基本数据类型分别设计了对应的类,称之为 包装类(Wrapper Classes),也有地方称为外覆类或数据类型类。 包装类和基本数据类型的关系如下表所示。 基本数据类型及对应的包装类 序号 基本数据类型
问题内容: 为什么第二段代码更快? 问题答案: 自动装箱使用,内部将Integer对象缓存为小整数(默认情况下为-128至127,但是最大值可以使用“ java.lang.Integer.IntegerCache.high”属性进行配置-请参见Integer.valueOf的源代码) ,因此与直接调用不同。因为在调用之前可以快速检查整数值的大小,所以直接调用要快一些(尽管如果您有很多小整数,它会使
问题内容: 自动装箱是Java编译器在原始类型及其对应的对象包装器类之间进行的自动转换。例如,将int转换为Integer,将double转换为Double,依此类推。如果转换结果相反,则称为拆箱。 那么,为什么我们需要它?为什么要在Java中使用自动装箱和拆箱呢? 问题答案: 需要一些上下文来充分理解其背后的主要原因。 基元与类 Java中的原始变量包含值(整数,双精度浮点二进制数等)。由于这些
我有一个框设置为在一个容器框内。这个集装箱箱还会有其他内容。 我正在尝试垂直居中内框内的文本。为此,我将与一起使用。 作为最后一步,我现在希望高度总是充满集装箱箱。以便此内框内垂直居中的文本始终垂直居中于容器框内。 > 容器框的高度会根据其内容进行调整,因此我无法在CSS中设置框的特定高度。 对于内框上的也没有帮助。 我怎样才能使这个内箱始终100%垂直地充满它的集装箱箱? 这里有一个示例代码段:
请注意,对于某些数字,引用比较将产生正确的结果,因为Integer类维护了到之间的值的内部缓存(另请参阅TheLostMind的注释)。这就是为什么我在示例中使用的原因,也是为什么我特别询问取消装箱/装箱而不是比较结果的原因。