Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用int vs Integer_Java_Integer_Int_Primitive - Fatal编程技术网

Java 使用int vs Integer

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不是对象,不能传递给任何需要 物体。常见的情况是使用提供

我遇到一个类,它使用整数变量来捕获要在for循环中使用的大小。这是一种良好的做法,还是应该使用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)由于实习-使用
    Integer.valueOf(int)
    而不是新的 整数(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");