不得不说我是java的新手。最近我正在研究使用java进行考试来实现数据结构。我在下面的代码中找到了基于数组的堆栈。
class StackX {
private int maxSize; // size of stack array
private long[] stackArray;
private int top; // top of stack
//-------------------------------------------------------------
public StackX(int s) // constructor
{
maxSize = s; // set array size
stackArray = new long[maxSize]; // create array
top = -1; // no items yet
}
//-------------------------------------------------------------
public void push(long j) // put item on top of stack
{
stackArray[++top] = j; // increment top, insert item
}
我对前三行有什么想法,但我很难理解下面的行。
maxSize = s; // set array size
stackArray = new long[maxSize]; // create array
top = -1; // no items yet
有人可以解释为什么在数据类型为 long 的数组中使用 [maxSize] ?不应该是数字,因为数据类型很长。
为什么在推(长j)上使用 long j 时,没有与j相关的变量。
帮助&评论表示赞赏。
答案 0 :(得分:7)
我建议搜索一些网站或书籍,从头开始,尝试跳入并理解一切对大多数人来说都不适用,但回答你的问题:
stackArray = new long[maxSize];
创建一个大小为'maxsize'的新数组,它可以保存long
类型的变量。 'maxsize'的类型为int,它是一个整数,并且数组中只能包含一定数量的元素。
long j
,因为这意味着必须在某个时间push(1.0)
调用方法,该方法调用push方法并将1.0
作为j
传递。然后它将它放在位于顶部+1的数组中。
答案 1 :(得分:4)
有人可以解释为什么在数据类型为long的数组中使用[maxSize]?不应该是数字,因为数据类型很长。
maxSize
是一个整数变量,用于指定创建的数组的大小。所以这句话:
stackArray = new long[maxSize];
创建一个包含maxSize
元素的元素(例如20),然后将该数组的引用分配给stackArray
变量。
不清楚你的期望是什么,但我建议你阅读Java tutorial section on arrays。
为什么在push(long j)上使用long j,没有与j相关的变量。
此方法声明:
public void push(long j)
有一个名为j
的参数。这意味着无论何时调用方法,都必须将long
值作为参数传递给方法。该方法调用的参数的初始值与您传入的值相同。从那时起,它就像该方法的局部变量。同样,Java tutorial on methods可能会对您有所帮助。
答案 2 :(得分:0)
有人可以解释为什么在数据类型为long的数组中使用[maxSize]?不应该是数字,因为数据类型很长。
虽然您的数组可能被声明为类型long
,但索引仍为int
。无论数组的类型是什么,索引都是int
。请查看this page上的示例以获取更多信息。
也为什么在推(long j)上使用long j没有与j相关的变量。
查找调用此方法push()
的代码,您将找到与j
关联的变量。由于您的数组类型为long
,因此当您将元素放入此(推送)时,它们也必须是long
类型。因此,long j
。