Java 为什么我必须在堆栈中两次将top初始化为-1?
我目前正在研究堆栈,有一件事我不明白。我必须创建两个构造函数。我不明白的是,当我的程序已经堆叠了一些元素时,为什么我必须将第二个构造函数的顶部设置为-1?谢谢Java 为什么我必须在堆栈中两次将top初始化为-1?,java,stack,Java,Stack,我目前正在研究堆栈,有一件事我不明白。我必须创建两个构造函数。我不明白的是,当我的程序已经堆叠了一些元素时,为什么我必须将第二个构造函数的顶部设置为-1?谢谢 public stack () { Array = new Object [MAX_ELEMENTS]; top = -1; } public stack (int elements) { Array = new Object [elements]; top = -1; } 为什么我必须将第二
public stack () {
Array = new Object [MAX_ELEMENTS];
top = -1;
}
public stack (int elements) {
Array = new Object [elements];
top = -1;
}
为什么我必须将第二个构造函数的顶部设置为-1
通常不需要,但在本例中需要,因为有两个单独的构造函数彼此不调用。有几种更好的解决方案:
top
inline,而不是在构造函数中:
int top = -1;
public stack () {
this(MAX_ELEMENTS);
}
public stack (int elements) {
Array = new Object [elements];
top = -1;
}
没有。它只是创建了一个您指定大小的数组。除此之外,您还可以使用实例初始值设定项:
{
top = -1;
}
无论构造函数用户是谁,都将调用它。您不必这样做。我可以想出三种不同的选择。但您确实需要确保
top
已正确初始化。。。以某种方式对于所有可以创建堆栈实例的方法,第二个构造函数实际上没有添加任何元素。它使用元素
作为大小。像MAX\u ELEMENTS
是您的第一个构造函数中的默认值。当我的程序已经堆叠了一些元素时?
不,您只需设置堆栈大小,但它仍然是空的。实际上,如果您要传递一个预先填充了元素的数组,您可能需要一个额外的参数来说明数组中有多少元素。或者,从数组大小推断数字。但无论哪种方式,都可以将top
设置为适当的值。