Java 和 C# 中的 int 和 Integer 有什么区别?

2022-08-31 05:24:43

当我读到更多关于软件的Joel Joel时,我遇到了Joel Spolsky说了一些关于Java / C#(面向对象编程语言)中an和an之间的区别的特定类型的程序员的话。intInteger

那么,有什么区别呢?


答案 1

在Java中,'int'类型是基元,而'Integer'类型是对象。

在C#中,'int'类型与并且是一种值类型(即更像java'int')相同。整数(就像任何其他值类型一样)可以装箱(“包装”)到一个对象中。System.Int32


对象和基元之间的差异有点超出了这个问题的范围,但总结一下:

对象为多态性提供了工具,通过引用传递(或者更准确地说,通过值传递引用),并从中分配。相反,基元是不可变的类型,按值传递,并且通常从堆栈中分配。


答案 2

好吧,在Java中,int是基元,而整数是对象。意思是,如果你做了一个新的整数:

Integer i = new Integer(6);

你可以在 i 上调用一些方法:

String s = i.toString();//sets s the string representation of i

而对于 int:

int i = 6;

您不能对它调用任何方法,因为它只是一个基元。所以:

String s = i.toString();//will not work!!!

会产生错误,因为 int 不是对象。

int 是 Java 中为数不多的基元之一(以及 char 和其他一些基元)。我不是100%确定,但我认为Integer对象或多或少只是有一个int属性和一大堆与该属互的方法(例如toString()方法)。因此,Integer 是一种使用 int 的奇特方式(就像 String 是使用一组字符的奇特方式一样)。

我知道Java不是C,但是由于我从未用C编程过,这是我能找到的最接近答案的。希望这有帮助!

Integer object javadoc

Integer Ojbect 与 int 基元比较