0

不得不说我是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]吗?它不应该是数字,因为数据类型很长。

还有为什么在 push(long j) 上使用long j没有与 j 关联的变量。

帮助和意见表示赞赏。

4

3 回答 3

7

我建议搜索一些网站或书籍并从头开始,尝试跳入并理解所有内容并不适合大多数人,但可以回答您的问题:

stackArray = new long[maxSize];创建一个大小为 'maxsize' 的新数组,该数组可以保存类型为 的变量long。'maxsize' 是 int 类型,它是一个整数,数组中只能有整数个元素。

long j之所以使用,是因为它意味着必须在某个点push(1.0)调用一个方法,该方法调用 push 方法并1.0作为j. 然后将其放入数组顶部 +1 的位置。

于 2012-06-02T07:02:30.637 回答
4

有人可以解释为什么在数据类型为 long 的数组中使用 [maxSize] 吗?它不应该是数字,因为数据类型很长。

maxSize是一个整数变量,用于指定创建的数组的大小。所以这个声明:

stackArray = new long[maxSize];

创建一个包含maxSize元素(例如 20)的元素,然后将对该数组的引用分配给stackArray变量。

目前还不清楚您的期望,但我建议阅读有关数组的 Java 教程部分

还有为什么在 push(long j) 上使用 long j 没有与 j 关联的变量。

此方法声明:

public void push(long j)

有一个名为的参数j。这意味着无论何时调用该方法,都必须将一个long值作为参数传递给该方法。该方法调用的参数初始值与您传入的值相同。从那时起,它就像该方法的局部变量。同样,关于方法的 Java 教程可能会对您有所帮助。

于 2012-06-02T07:02:28.777 回答
0

有人可以解释为什么在数据类型为 long 的数组中使用 [maxSize] 吗?它不应该是数字,因为数据类型很长。

尽管您的数组可能被声明为 type long,但索引仍然是int. 无论您的数组是什么类型,索引都是int. 查看此页面上的示例以获取更多信息。

还有为什么在 push(long j) 上使用 long j 没有与 j 关联的变量。

寻找调用这个方法的代码push(),你会发现一个与之关联的变量j。而且由于您的数组是类型的long,当您将元素放入 this(push) 中时,它们也必须是long类型。因此,long j

于 2012-06-02T06:59:59.173 回答