我在阅读《关于软件的更多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在库函数c#中是预定义的,但在java中我们可以创建Integer对象
“int”是原始数据类型,是Java包装类中的“Integer”。“Integer”可以用作需要对象的方法的参数,而“int”可以用作需要整数值的方法的参数,可用于算术表达式。
Int是基本数据类型。 Integer是一个包装器类。它可以将int型数据存储为对象。
在c#中,int只是System的别名。Int32,系统的字符串。字符串,double for System。双等等……
我个人更喜欢int, string, double等,因为他们不需要使用系统;这是个愚蠢的理由,我知道……
嗯,在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原语比较