2012-06-02 45 views
0

不得不说我是一个总的新手到Java。最近我正在学习使用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 

有人可以解释为什么一个阵列,其是数据类型在使用[MAXSIZE]?不应该是数字,因为数据类型很长。

也为什么使用长j推(长j)没有变量与j相关联。

帮助&评论感谢。

+3

您应该改善您的标题 –

回答

0

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

尽管您的数组可能被声明为long类型,但索引仍为int。无论数组的类型是什么,索引都是int。有关更多信息,请参阅this page上的示例。

此外,为什么在推动中使用长j(长j)没有与j相关的变量。

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

+0

感谢您的帮助球员 – user1419170

4

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

maxSize是一个整型变量,用于指定创建的数组的大小。因此该语句:

stackArray = new long[maxSize]; 

创建具有maxSize元件(例如20),然后一个元素分配到该阵列到stackArray变量的引用。我们建议您阅读Java tutorial section on arrays

也是为什么使用长j在推(长j)没有变量与j相关联。

此方法声明:

public void push(long j) 

参数称为j。这意味着无论何时调用该方法,都必须将long值作为参数传递给该方法。该方法调用的参数的初始值与您传递的值相同。从该点开始,它就像该方法的局部变量。再次,Java tutorial on methods可能会帮助你。

7

我建议寻找一些网站或书籍,从头开始,试图只跳和理解一切不倾向于适用于大多数人,但在回答你的问题:

stackArray = new long[maxSize];创建可以容纳long类型的变量的新的数组大小'maxsize'。 'maxsize'是int类型,它是一个整数,并且该数组中只能包含整数个元素。

long j使用,因为这意味着方法必须在某点push(1.0)它调用推送方法,并传递在1.0作为j被调用。然后将它放在位置顶部+1的阵列中。