整数与int类型,哪个更好?

时间:2013-07-08 11:51:33

标签: java

为什么Java具有这些IntegerCharacter类型和类 而他们也在调整C intchar等 有时当人们创建数组时,他们倾向于 使用Integer[] i = {......} 而不是int[] i = {....}; 那有什么不同呢?

4 个答案:

答案 0 :(得分:0)

在java中,

  • Integer是一个包装类,即objectint是原语。
  • 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默认值,即0System.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的任何可能性或您解释为空条件的特殊值,例如-1Integer.MAX_VALUE

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

然而,使用autoboxing,我们可以立即将int添加到ArrayList而无需手动包装它,如果我们在get()条目时需要原语,它将自动透明地打开它。

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

答案 2 :(得分:0)

IntegerCharacter以及其他类似内容Objectsintchar和其他类似的内容都是原语。

最大的区别是Object可以是null而原始值不能。{/ p>

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

答案 3 :(得分:0)

我们通常可以说的唯一区别是Wrapper是primitive的客观表示。

Wrapper classes用于在需要Object时表示原始值。