在Java中Integer和int的区别是什么?

例如,为什么你可以做:

int n = 9;

而不是:

Integer n = 9;

你可以这样做:

Integer.parseInt("1");

而不是:

int.parseInt("1");
305353 次浏览

Integer基本上只是原始类型int的包装器。它允许您使用Integer类的所有函数,使您的工作更加轻松。

如果您是Java新手,那么您应该学会欣赏Java文档。例如,你想知道的关于整数类的任何事情都有详细的文档。

这是直接从Integer类的文档中出来的:

Integer类将原始类型int的值包装在对象中。Integer类型的对象包含一个int类型的字段。

Integer是Java中的包装器类型,而int是一个基本类型。在Java中,除了基本数据类型之外的所有内容都是作为对象实现的,这意味着Java是一种高质量的纯面向对象编程语言。如果需要,所有的原语类型在Java中也可以作为包装器类型。使用基本类型可以获得一些性能上的好处,因此包装器类型应该只在必要时使用。

在下面的例子中。

Integer n = 9;

常量9auto-boxed (auto-boxingunboxingjava 5开始自动出现)到Integer,因此你可以这样使用语句,也可以使用Integer n = new Integer(9)。这实际上是通过语句Integer.valueOf(9).intValue();实现的

int是一个表示整数的基本类型。而Integer是包装int的对象。Integer对象提供了更多的功能,例如转换为十六进制、字符串等。

你也可以在Integer中使用OOP概念。例如,你可以使用Integer作为泛型(即Collection<Integer>)。

Int是基本类型,不是对象。这意味着没有与之关联的方法。Integer是一个具有方法的对象(例如parseInt)。

在更新的java中,有自动装箱(和解装箱)的功能。这意味着编译器将在需要的地方插入Integer.valueOf(int)或integer.intValue()。这意味着它实际上是可以写的

Integer n = 9;

它被解释为

Integer n = Integer.valueOf(9);

Integer是包装器类/对象,int是基本类型。当您想在集合中存储int值时,这种差异发挥了巨大的作用,因为它们只接受对象作为值(直到jdk1.4)。JDK5之后,因为自动装箱,它是一个完全不同的故事。

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

Integer是一个类,与Java语言中的其他类没有什么不同。Integer类型的变量将参考文献存储为Integer对象,就像任何其他引用(对象)类型一样。Integer.parseInt("1")是从类Integer调用静态方法parseInt(注意,该方法实际返回int而不是Integer)。

更具体地说,Integer是一个具有单个类型为int的字段的类。这个类用于需要像对待其他对象一样对待int的地方,比如泛型类型或需要可空性的情况。

注意,Java中的每个基元类型都有一个等价的包装器类:

  • byteByte
  • shortShort
  • intInteger
  • longLong
  • booleanBoolean
  • charCharacter
  • floatFloat
  • doubleDouble

包装器类继承自Object类,而原语类则不是。所以它可以在集合中使用对象引用或泛型。

从java 5开始,我们就有了自动装箱,并且基本元素和包装类之间的转换是自动完成的。但是要注意,这可能会引入微妙的bug和性能问题;明确转换永远不会有坏处。

int变量保存一个32位有符号整数值。Integer(大写I)保存对(类)类型Integer或null对象的引用。

Java自动在两者之间进行类型转换;当Integer对象作为int操作符的参数出现,或者被赋值给int变量,或者一个int值被赋值给Integer变量时,从Integer到int。这种类型转换称为装箱/解装箱。

如果一个引用null的Integer变量被显式或隐式地解盒,则抛出NullPointerException异常。

(在上述文本中,“变量”指局部变量、字段或参数)

为了优化Java代码运行时,int 原始类型(s)已被添加,包括floatbool等,但它们与包装器类一起出现,以便在需要时可以转换并使用它们作为标准Java对象以及许多作为其成员函数的实用程序(如Integer.parseInt("1"))。

在Java中,int是一个基本数据类型,而Integer是一个Helper类,它用于将一种数据类型转换为另一种数据类型。

例如:

         double doubleValue = 156.5d;
Double doubleObject  = new Double(doubleValue);
Byte myByteValue = doubleObject.byteValue ();
String myStringValue = doubleObject.toString();

基本数据类型存储最快的可用内存,而Helper类比较复杂,存储在堆内存中。

参考“David Gassner”Java基本训练。

int是一个基本数据类型,而Integer是Java中的引用或包装器类型(类)。

java 1.5之后,引入了自动装箱拆箱的概念,你可以像这样初始化intInteger

int a= 9
Integer a = 9 // both valid After Java 1.5.

为什么Integer.parseInt("1");而不是int.parseInt("1"); ??

Integer是定义在jdk库中的类,而parseInt()是属于Integer类的静态方法

因此,Integer.parseInt("1");在java中是可能的。但是int在java中是基本类型(假设像一个关键字)。因此,你不能用int调用parseInt()

这个参数来自Java:完整参考,第九版

Java使用基本类型(也称为简单类型), 类所支持的基本数据类型,例如int 语言。原始类型,而不是对象,被用于这些 为了性能。为这些值使用对象 会将不可接受的开销添加到最简单的 计算。因此,基元类型不是对象的一部分 hierarchy, and 它们不继承Object.

. bb0 . bb0 . bb0 . bb0 . bb0 . bb0 . bb0 . bb0

尽管表现 原始类型提供的好处,有时您会 需要一个对象表示。例如,不能传递原语 通过引用方法键入。还有很多标准数据 由Java实现的结构对对象进行操作,这意味着 您不能使用这些(特定于对象的)数据结构来存储基本类型。来 为了处理这些(和其他)情况,Java提供了类型包装器, 哪些类将一个基本类型封装在一个对象中

包装器类直接与Java的自动装箱相关 特性。类型包装器是Double, Float, Long, Integer, Short, 字节,字符和布尔值。这些类提供了广泛的 方法,这些方法允许您将原语类型完全集成到 Java的对象层次结构