Questions tagged «autoboxing»

装箱是使用对象包装原始值以便可以将其用作参考对象的过程。提取先前装箱的原语称为拆箱。自动装箱是“语法糖”的一种形式,编译器会自动为您执行(装箱)装箱,使您可以交替使用值和引用的类型。


10
如何在Java中正确比较两个Integer?
我知道,如果将装箱的原始整数与常量进行比较,例如: Integer a = 4; if (a < 5) a 将自动取消装箱,比较将起作用。 但是,当您比较两个装箱的Integers并且想要比较等于或小于/大于/大于时,会发生什么? Integer a = 4; Integer b = 5; if (a == b) 上面的代码是否会导致检查它们是否是同一对象,或者在这种情况下会自动拆箱? 关于什么: Integer a = 4; Integer b = 5; if (a < b) ?
215 java  integer  autoboxing 


21
人们为什么仍然在Java中使用原始类型?
从Java 5开始,我们已经对原始类型进行装箱/拆箱,因此将int其包装为java.lang.Integer,等等。 我最近看到许多新的Java项目(肯定要求JRE的版本至少为5,如果不是6的话)正在使用int而不是java.lang.Integer,尽管使用后者要方便得多,因为它具有一些用于转换的辅助方法到long的值等。 为什么有些人仍在 Java中使用原始类型?有什么切实的好处吗?


10
Java中的奇怪整数拳击
我刚刚看到类似于以下代码: public class Scratch { public static void main(String[] args) { Integer a = 1000, b = 1000; System.out.println(a == b); Integer c = 100, d = 100; System.out.println(c == d); } } 运行后,此代码块将打印出来: false true 我理解为什么第一个是false:因为两个对象是单独的对象,所以==比较引用。但是我不知道为什么第二条语句返回了true?当Integer的值在一定范围内时,会出现一些奇怪的自动装箱规则吗?这里发生了什么?
114 java  autoboxing 

4
比较装箱的Long值127和128
我想使用条件比较两个Long对象的值if。当这些值小于128时,if条件将正常工作,但是当这些值大于或等于128时,比较将失败。 例: Long num1 = 127; Long num2 = 127; if (num1 == num2) { // Works ok } 上面代码的比较正常进行,但是下面代码失败: Long num1 = 128; Long num2 = 128; if (num1 == num2) { // Does NOT work } 为什么将Long变量的值大于127进行比较存在问题?如果将变量数据类型更改为长原语,则比较适用于所有情况。


9
为什么我们在Java中使用自动装箱和拆箱?
自动装箱是Java编译器在原始类型及其对应的对象包装器类之间进行的自动转换。例如,将int转换为Integer,将double转换为Double,依此类推。如果转换过程相反,这称为拆箱。 那么,为什么我们需要它?为什么要在Java中使用自动装箱和拆箱呢?
80 java  autoboxing 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.