Java 使用int vs Integer
我遇到一个类,它使用整数变量来捕获要在for循环中使用的大小。这是一种良好的做法,还是应该使用int基元数据类型Java 使用int vs Integer,java,integer,int,primitive,Java,Integer,Int,Primitive,我遇到一个类,它使用整数变量来捕获要在for循环中使用的大小。这是一种良好的做法,还是应该使用int基元数据类型 Integer size = something.getFields().size(); for (Integer j = 0; j < size - 1; ++j) Integer size=something.getFields().size(); 对于(整数j=0;j、整数是可以引用包含数字的对象的指针 int不是对象,不能传递给任何需要 物体。常见的情况是使用提供
Integer size = something.getFields().size();
for (Integer j = 0; j < size - 1; ++j)
Integer size=something.getFields().size();
对于(整数j=0;j
如果可以使用int
请这样做。如果该值可以是null
或用作对象(例如泛型),请使用Integer
通常使用哪种类型并不重要,但通常
int
的性能稍好一些。在可能的情况下,始终提升基元类型
基元类型不能用作泛型参数或null 这种方法在实践中并不好,请尽可能使用
int
。使用Integer
表示此特定变量可以是null
(或者它在集合中,该死的泛型…),但事实并非如此
此外,使用
Integer
会增加装箱和拆箱的额外开销。这是一个在大型项目中等待发生的潜在灾难。这里的编码员忘记了每个整数实际上是一个新对象,要将其用作int,必须始终进行装箱和拆箱。它不仅效率低下,而且无法按预期运行。建议您尽可能始终使用int,并且仅在将这些值放入列表、容器或数据库存储时使用Integer。请记住,使用>、<和==比较对象意味着与使用相同运算符比较基本体不同的内容。不要仅用于循环。使用基本类型int(更好的性能),它与类Integer不同
Integer类将基元类型int的值包装在
对象Integer类型的对象包含一个字段,其类型为
是int
此外,此类还提供了几种转换int的方法
将字符串和字符串转换为int,以及其他常量和
方法在处理int时非常有用
因此,如果需要调用整数函数或需要为其分配空值,请使用Integer
对于像List这样的泛型,您还需要使用Integer而不是int。提供Integer类是为了以纯OO的方式对值进行装箱/取消装箱。在适当的地方使用int,除非您特别需要以面向对象的方式使用它;在这种情况下,整数是合适的 然而,在这里,非常不同的事情正在被掩盖。整数是一个数字;>整数是可以引用包含数字的对象的指针
int不是对象,不能传递给任何需要 物体。常见的情况是使用提供的集合类( 列表、映射、集合)-尽管可以编写这些的版本 类提供与对象版本类似的功能。这个 通常需要包装类(整数、双精度等) 无论何时使用内省(例如在反射API中) 更好地描述何时使用其中一种与另一种: 在int和Integer之间选择 在进入本文之前,我将首先介绍如何使用这些类型 详细说明原因
- 出于性能原因,首选
int
- 获取对象的方法(包括泛型类型,如
) 将隐式要求使用整数List
- 使用
对于较低的值(-128到 127)由于实习-使用整数
而不是新的 整数(int)Integer.valueOf(int)
- 不要使用
或=
=代码>使用整数类型
- 当需要表示 缺少值(null)
- 注意使用空值将整数值解装箱为int
当需要使用对象时,必须使用包装器类, 比如整数、双精度、浮点等 例如: 这里我们将字符串转换为整数(基元类型), 但是方法parseInt(stringstr)只适用于包装类(即对象),
所以我们用它。。。您会发现它在java中有更多的用途。装箱和取消装箱可能会导致性能下降,因为在原语和引用类型之间转换会产生开销
但是,Integer类添加了非常有用的附加方法。我通常使用Integer,因为它纯粹是面向对象的。int的性能肯定比它的对象对应物要好得多,但只有在循环中循环数百万次时,它才是明显的
IMHO,如果性能在您的应用程序中是最重要的,并且您想要压缩哪怕是一纳秒,那么请使用int而不需要任何大脑。但如果主要关注OO和可读性,则使用整数 可能重复:提供Integer类,以便以纯OO方式装箱/取消装箱值。在适当的地方使用int,除非您特别需要以面向对象的方式使用它;在这种情况下,整数是合适的。也可能重复使用
Integer#intValue(Integer)
和Integer#valueOf(int)
来回更改也很简单,我想你的意思是Integer.intValue()
)Java 5.0中引入了自动装箱和取消装箱,您不需要这样做。在许多情况下,int
的性能不仅稍有提高,而且大大提高,特别是在紧循环中:)您的回答非常好。请注意使用原语值在移动/资源受限应用程序中的性能优势。“int不是对象,不能传递给任何需要对象的方法。”doSomething(911)如何??公共对象doSomething(对象o){//do something!!!return o;}为什么不使用==或!=使用整数类型?它不会自动取消装箱到int吗?Noob问题:这不等于:intn=Integer.parseInt(“10”).intValue?
int n = Integer.parseInt("10");