为什么Java具有这些Integer
,Character
类型和类
而他们也在调整C int
,char
等
有时当人们创建数组时,他们倾向于
使用Integer[] i = {......}
而不是int[] i = {....};
那有什么不同呢?
答案 0 :(得分:0)
在java中,
Integer
是一个包装类,即object
,int
是原语。Integer
默认值为null
,而对于int,则为0
int
,反之亦然Followign程序演示了这个
public class TestClass {
int num;
Integer number;
public static void main(String[] args) {
TestClass testClass = new TestClass();
System.out.println(testClass.num);
System.out.println(testClass.number);
testClass.autoBoxInt(testClass.num);
}
public void autoBoxInt(Integer number){
System.out.println(number);
}
}
输出
0
null
0
声明System.out.println(testCkass,num)
打印int
默认值,即0
。 System.out.println(testClass.number)
打印Integer
默认值,即null
。当您将testClass.num
传递给参数为Integer
的方法时,int
会自动转换为Integer
对象。所以该方法打印出0
。
java集合框架使用自动装箱将基元转换为Wrapper类,因为它们不能采用原始值。它们使用散列和哈希码帮助快速检索和存储对象到集合中。以下示例演示了此
Set<Integer> numbers = new HashSet<Integer>();
numbers.add(new Integer(10));
numbers.add(new Integer(4));
numbers.add(6);
numbers.add(-9);
numbers.add(new Integer(65));
System.out.println(numbers);
打印出设置
[4, 65, 6, -9, 10]
要了解散列是什么以及如何使用散列码,您可以查看这些链接 http://www.thejavageek.com/2013/06/27/what-are-hashcodes/ http://www.thejavageek.com/2013/06/26/what-is-the-significance-of-equals-method-in-java/
答案 1 :(得分:0)
Integer
是一个对象,而int
是一个原语。每当我们将int
传递给函数时,我们都按原样传递它。
Integer
包装一个int。在它的情况下它是不可变的,因此通过引用编辑它是行不通的,但它可以放入泛型。这可以设置为null,而int
没有超出0
的任何可能性或您解释为空条件的特殊值,例如-1
或Integer.MAX_VALUE
。
例如,ArrayList<int>
完全无效,而ArrayList<Integer>
必须与包裹的整数一起使用。
然而,使用autoboxing,我们可以立即将int
添加到ArrayList而无需手动包装它,如果我们在get()
条目时需要原语,它将自动透明地打开它。
最后,如果您使用有限数量的不同变量或固定数组进行计算,通常应使用int
。在处理集合,列表或映射时,您应该将集合声明为FooCollection<Integer>
,然后add(
直接允许自动装箱。
答案 2 :(得分:0)
Integer
,Character
以及其他类似内容Objects
而int
,char
和其他类似的内容都是原语。
最大的区别是Object
可以是null
而原始值不能。{/ p>
建议尽可能使用原始值,因为它们使用较少的内存。
答案 3 :(得分:0)
我们通常可以说的唯一区别是Wrapper是primitive
的客观表示。
Wrapper classes用于在需要Object
时表示原始值。