尝试编译以下代码时:
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()
包含的属性?
答案 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实例化为任何值,因此错误,因为编译器不知道在内存中分配给变量的内容。