我在阅读《关于软件的更多Joel》时,偶然看到Joel Spolsky说,有一种特殊类型的程序员知道Java/ c#(面向对象编程语言)中int和Integer的区别。
那么,有什么不同呢?
我在阅读《关于软件的更多Joel》时,偶然看到Joel Spolsky说,有一种特殊类型的程序员知道Java/ c#(面向对象编程语言)中int和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原语比较
其他回答
嗯,在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原语比较
“int”是原始数据类型,是Java包装类中的“Integer”。“Integer”可以用作需要对象的方法的参数,而“int”可以用作需要整数值的方法的参数,可用于算术表达式。
在Java中,int类型是基本数据类型,而Integer类型是对象。
在c#中,int类型也是一种数据类型,与System.Int32相同。整数(就像任何其他值类型一样)可以被装箱(“包装”)到一个对象中。
Int是基本数据类型。 Integer是一个包装器类。它可以将int型数据存储为对象。
int变量保存一个32位有符号整数值。Integer(大写I)保存对(类)类型Integer或null对象的引用。
Java自动在两者之间进行类型转换;当Integer对象作为int操作符的参数出现,或者被赋值给int变量,或者一个int值被赋值给Integer变量时,从Integer到int。这种类型转换称为装箱/解装箱。
如果一个引用null的Integer变量被显式或隐式地解盒,则抛出NullPointerException异常。