Java中Integer和int有什么区别?

min*_*ino 232 java int class

例如,你为什么这样做:

int n = 9;
Run Code Online (Sandbox Code Playgroud)

但不是:

Integer n = 9;
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

Integer.parseInt("1");
Run Code Online (Sandbox Code Playgroud)

但不是:

int.parseInt("1");
Run Code Online (Sandbox Code Playgroud)

Dar*_*ogg 305

int是一种原始类型.类型的变量int存储要表示的整数的实际二进制值.int.parseInt("1")没有任何意义,因为int不是一类,因此没有任何方法.

Integer是一个类,与Java语言中的任何其他类都没有区别.类型的变量Integer存储引用Integer对象,就像任何其它参考(对象)类型.Integer.parseInt("1")parseInt从类调用静态方法Integer(请注意,此方法实际上返回的是一个int而不是一个Integer).

更具体地说,Integer是一个具有单个字段类型的类int.此类用于需要int像任何其他对象一样对待的地方,例如在泛型类型或需要可空性的情况下.

请注意,Java中的每个基本类型都有一个等效的包装类:

  • byte 具有 Byte
  • short 具有 Short
  • int 具有 Integer
  • long 具有 Long
  • boolean 具有 Boolean
  • char 具有 Character
  • float 具有 Float
  • double 具有 Double

包装类继承自Object类,而原始类则不继承.因此,它可以在具有Object引用或Generics的集合中使用.

从java 5开始,我们有自动装箱,并且原始和包装类之间的转换是自动完成的.但请注意,因为这会引入细微的错误和性能问题; 明确转换永远不会伤害.

  • @ VSG24 ......但这是一个Java问题,这是一个Java答案."C#"在这里完全无关紧要. (15认同)
  • 在`C#`中,所有数据类型都有"别名",而`int.Parse()`确实有意义(即使它确实没有) (5认同)
  • 好例子可能是:编译错误:List <int>有效:List <Integer> (3认同)

Mat*_*hic 31

Integer是一个类,int是基本类型.

请阅读以下链接:

  • 呵呵,我认为实际上是相反的。如果您不知道什么是原始类型,则“ int是原始类型”不会告诉您任何内容。(如果这样做,您很可能已经知道int和Integer之间的区别)。将阅读器发送到两个标记为“链接1”和“链接2”的链接非常无济于事,特别是与仅引用相关部分相比。 (7认同)

Nad*_*far 7

Integer几乎只是原始类型int的包装器.它允许您使用Integer类的所有功能,使您的生活更轻松.

如果您是Java新手,那么您应该学会欣赏的是Java文档.例如,您需要了解有关Integer类的任何信息.

这直接来自Integer类的文档:

Integer类在对象中包装基本类型int的值.Integer类型的对象包含一个类型为int的字段.

  • 这有点忽略了这一点.例如,由于`Integer`是一个类,它可以存储在容器中(与原始类型不同). (7认同)

小智 6

int变量保存32位有符号整数值.Integer(使用大写I)保存对(类)Integer类型的对象的引用,或者为null.

Java自动在两者之间进行转换; 每当Integer对象作为int运算符的参数出现或被赋值给int变量,或者int值被赋值给Integer变量时,从Integer到int.这种铸造称为装箱/拆箱.

如果引用null的Integer变量被显式或隐式地取消装箱,则抛出NullPointerException.

(在上文中,术语"变量"表示局部变量,字段或参数)


Lio*_*ion 5

Integer是指Java中的包装类型,而是int基本类型.除Java中的原始数据类型之外的所有内容都实现为对象,这意味着Java是一种高度合格的纯面向对象编程语言.如果需要,所有基元类型也可用作Java中的包装类型.您可以使用基本类型获得一些性能优势,因此只有在必要时才应使用包装类型.

在您的示例中如下.

Integer n = 9;
Run Code Online (Sandbox Code Playgroud)

常量9自动装箱的(auto-boxing并且unboxing从头java 5开始自动发生)Integer,因此你可以使用这样的语句Integer n = new Integer(9).这实际上是通过声明实现的Integer.valueOf(9).intValue();