为什么Integer构造函数方法不再需要属性?

时间:2014-10-21 16:11:27

标签: java compiler-errors

尝试编译以下代码时:

public class IntTest {
    public static void main(String[] args) {
        Integer i = new Integer(5);
    }
}

发生以下错误:

 IntTest.java:3: error: constructor Integer in class Integer cannot be applied to given types;
    Integer i = new Integer(5);
                ^
  required: no arguments
  found: Integer
  reason: actual and formal argument lists differ in length
1 error

因此,您只能使用new Integer()初始化变量,并且无法将该数字添加为属性,例如new Integer(5)

为什么Java使用与平常不同的构造函数,不接受new Integer()包含的属性?

3 个答案:

答案 0 :(得分:4)

您正在尝试对其进行初始化 - 您将i作为参数传递,而不是像5那样。

答案 1 :(得分:1)

public Integer(int value)
   Constructs a newly allocated Integer object that represents the specified int value.

这是整数的文档,你传递的是当前值为null的整数i,给返回的构造函数和整数from和int值,正确的形式将是这样的

Integer i = new Integer(5);

你正在做这样的事情

int i = i;

我希望能帮到你。

答案 2 :(得分:0)

Operator new返回对分配用于保存Integer类型对象的内存块的引用,然后将i指向该位置。它调用Integer类Integer()的构造函数,如下所示:

public Integer(int value) {
    this.value = value;
}

因此,您可以看到它将this.value设置为提供给构造函数的参数。这是引用提供给构造函数的内存块。

从你的代码中我没有看到你将i实例化为任何值,因此错误,因为编译器不知道在内存中分配给变量的内容。