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

解决方案:

在Java中," int"类型是原始类型,而" Integer"类型是对象。

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

对象和基元之间的差异在一定程度上超出了此问题的范围,但可以总结一下:

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


在Java中,一个int是一个原语,而一个Integer是一个Object。

意思是,如果我们创建了一个新的整数:

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可能是使用一组char的一种理想方式)一样。

日期:2020-03-23 16:09:21 来源:oir作者:oir