我在阅读《关于软件的更多Joel》时,偶然看到Joel Spolsky说,有一种特殊类型的程序员知道Java/ c#(面向对象编程语言)中int和Integer的区别。
那么,有什么不同呢?
我在阅读《关于软件的更多Joel》时,偶然看到Joel Spolsky说,有一种特殊类型的程序员知道Java/ c#(面向对象编程语言)中int和Integer的区别。
那么,有什么不同呢?
当前回答
01. 整数可以为空。但是int不能为null。
Integer value1 = null; //OK
int value2 = null //Error
02. 只能将包装器类类型值传递给任何集合类。
(包装类-布尔,字符,字节,短,整数,长,浮动,双)
List<Integer> element = new ArrayList<>();
int valueInt = 10;
Integer valueInteger = new Integer(value);
element.add(valueInteger);
但通常我们在集合类中添加原始值?02点正确吗?
List<Integer> element = new ArrayList<>();
element.add(5);
是的02是正确的,因为自动装箱。
自动装箱是java编译器进行的自动转换 原始类型与其对应的包装器类之间。
然后5转换为整型值自动装箱。
其他回答
“int”是原始数据类型,是Java包装类中的“Integer”。“Integer”可以用作需要对象的方法的参数,而“int”可以用作需要整数值的方法的参数,可用于算术表达式。
01. 整数可以为空。但是int不能为null。
Integer value1 = null; //OK
int value2 = null //Error
02. 只能将包装器类类型值传递给任何集合类。
(包装类-布尔,字符,字节,短,整数,长,浮动,双)
List<Integer> element = new ArrayList<>();
int valueInt = 10;
Integer valueInteger = new Integer(value);
element.add(valueInteger);
但通常我们在集合类中添加原始值?02点正确吗?
List<Integer> element = new ArrayList<>();
element.add(5);
是的02是正确的,因为自动装箱。
自动装箱是java编译器进行的自动转换 原始类型与其对应的包装器类之间。
然后5转换为整型值自动装箱。
(Java版本) 简单来说,int是原始的(不能有空值),Integer是int的包装对象。
一个使用Integer和int的例子,当你想比较int变量时,它会抛出错误。
int a;
//assuming a value you are getting from data base which is null
if(a ==null) // this is wrong - cannot compare primitive to null
{
do something...}
Instead you will use,
Integer a;
//assuming a value you are getting from data base which is null
if(a ==null) // this is correct/legal
{ do something...}
int变量保存一个32位有符号整数值。Integer(大写I)保存对(类)类型Integer或null对象的引用。
Java自动在两者之间进行类型转换;当Integer对象作为int操作符的参数出现,或者被赋值给int变量,或者一个int值被赋值给Integer变量时,从Integer到int。这种类型转换称为装箱/解装箱。
如果一个引用null的Integer变量被显式或隐式地解盒,则抛出NullPointerException异常。
嗯,在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原语比较