我在阅读《关于软件的更多Joel》时,偶然看到Joel Spolsky说,有一种特殊类型的程序员知道Java/ c#(面向对象编程语言)中int和Integer的区别。
那么,有什么不同呢?
我在阅读《关于软件的更多Joel》时,偶然看到Joel Spolsky说,有一种特殊类型的程序员知道Java/ c#(面向对象编程语言)中int和Integer的区别。
那么,有什么不同呢?
当前回答
int在库函数c#中是预定义的,但在java中我们可以创建Integer对象
其他回答
嗯,在Java中,int是一个原语,而Integer是一个对象。意思是,如果你创建了一个新的Integer:
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语言编程,这是我能找到的最接近答案的方法。
整数对象javadoc
Integer Ojbect与int原语比较
在c#中,int只是System的别名。Int32,系统的字符串。字符串,double for System。双等等……
我个人更喜欢int, string, double等,因为他们不需要使用系统;这是个愚蠢的理由,我知道……
Java已经回答了这个问题,下面是c#的答案:
“Integer”在c#中不是一个有效的类型名称,“int”只是System.Int32的别名。此外,与Java(或c++)不同,c#中没有任何特殊的基本类型,c#中类型的每个实例(包括int)都是一个对象。下面是一些演示代码:
void DoStuff()
{
System.Console.WriteLine( SomeMethod((int)5) );
System.Console.WriteLine( GetTypeName<int>() );
}
string SomeMethod(object someParameter)
{
return string.Format("Some text {0}", someParameter.ToString());
}
string GetTypeName<T>()
{
return (typeof (T)).FullName;
}
“int”是原始数据类型,是Java包装类中的“Integer”。“Integer”可以用作需要对象的方法的参数,而“int”可以用作需要整数值的方法的参数,可用于算术表达式。
你以前编程过吗? (int)是你可以为变量设置的基本类型之一(就像char, float,…)
但是Integer是一个包装类,你可以使用它对int变量执行一些函数(例如将它转换为字符串或反之亦然,…),但请注意包装类中的方法是静态的,所以你可以随时使用它们,而无需创建Integer类的实例。 回顾一下:
int x;
Integer y;
x和y都是int类型的变量,但是y是由一个Integer类包装的,并且有几个你使用的方法,但如果你需要调用Integer包装类的一些函数,你可以简单地做到这一点。
Integer.toString(x);
但请注意,x和y都是正确的,但如果您想将它们仅作为基本类型使用,请使用简单形式(用于定义x)。