1

为什么 Java 有这些IntegerCharacter类型和类,同时它们也在适应 Cintchar有时当人们创建数组时,他们倾向于使用Integer[] i = {......} 而不是有int[] i = {....}; 什么区别呢?

4

4 回答 4

0

在java中,

  • Integer是一个包装类,即它是一个objectwhileint是一个原语。
  • Integer默认值是null,而对于 int 它是0
  • 这两种类型都有自动装箱和自动拆箱的概念。
  • 整数可以转换为an 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给带有参数的方法时Integerint会自动转换为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/Java 中等于方法的意义是什么/

于 2013-07-08T11:53:03.817 回答
0

我们通常可以看出的唯一区别是 Wrapper 是primitive.

包装类用于在需要时表示原始值Object

于 2013-07-08T12:07:01.670 回答
0

Integer是一个对象,而int是一个基元。每当我们将 an 传递int给函数时,我们按原样传递它。

Integer包装一个 int。在这种情况下,它是不可变的,因此通过引用对其进行编辑是行不通的,但可以将其放入泛型中。这可以设置为 null 而int没有任何超出0或您解释为 null 条件的特殊值的可能性,例如-1or Integer.MAX_VALUE

例如,ArrayList<int>完全无效,而ArrayList<Integer>必须与被包装的整数一起使用。

然而,使用自动装箱,我们可以立即将 an 添加int到 ArrayList 中,而无需手动包装它,如果我们get()在输入时需要一个原语,它会自动透明地打开它。

最后,如果您使用有限数量的不同变量或固定数组进行计算,您通常应该使用int. 在处理集合、列表或映射时,您应该将集合声明为FooCollection<Integer>直接add(允许自动装箱的 int。

于 2013-07-08T11:54:28.130 回答
0

Integer,Character像这样的其他是Objectswhile int,char而像这样的其他是原语。

最大的区别是 anObject可以null,而原始值不能。

建议尽可能使用原始值,因为它们使用的内存更少。

于 2013-07-08T11:55:05.503 回答