重新溫習數組

發表于:2007-07-14來源:作者:點擊數: 標簽:
在此之前已經在本書中介紹過數組了?,F在既然你已了解了類,可以介紹關于數組的重要的一點:數組是作為對象來實現的。因此,你可能想要利用數組的一種特別的屬性,具體地說,就是一個數組的大

在此之前已經在本書中介紹過數組了?,F在既然你已了解了類,可以介紹關于數組的重要的一點:數組是作為對象來實現的。因此,你可能想要利用數組的一種特別的屬性,具體地說,就是一個數組的大小——也就是,一個數組能保存的元素的數目——可以在它的length 實例變量中找到。所有的數組都有這個變量,并且它總是保存數組的大小。下面的程序示例了這個性質:

// This program demonstrates the length array member.
class Length {

public static void main(String args[]) { int a1[] = new int[10];int a2[] = {3,5,7,1,8,99,44,-10};int a3[] = {4,3,2,1};

System.out.println("length of a1 is " + a1.length);
System.out.println("length of a2 is " + a2.length);
System.out.println("length of a3 is " + a3.length);

}
}

該程序顯示如下輸出:

length of a1 is 10
length of a2 is 8
length of a3 is 4

可以看出,每個數組的大小都被顯示。要記住length 的值和數組實際使用的元素的個數沒有關系。length 僅反映了數組能夠包含的元素的數目。

在許多情況下,你可以好好利用length 。例如,下面的程序是Stack類的改進版本。你可能回憶起,該類的早期的版本總是要產生一個10個元素的堆棧。下面的版本可以讓你產生任意長度的堆棧。stck.length 的值用來防止堆棧溢出。

// Improved Stack class that uses the length array member.

class Stack { private int stck[]; private int tos;

// allocate and initialize stack

Stack(int size) {
stck = new int[size];
tos = -1;

}

// Push an item onto the stack void push(int item) {if(tos==stck.length-1) // use length member System.out.println("Stack is full.");
else
stck[++tos] = item;
}

// Pop an item from the stack int pop() {

if(tos < 0) { System.out.println("Stack underflow."); return 0;

}
else
return stck[tos--];
}
}

class TestStack2 {

public static void main(String args[]) {
Stack mystack1 = new Stack(5);
Stack mystack2 = new Stack(8);
// push some numbers onto the stack
for(int i=0; i<5; i++) mystack1.push(i);
for(int i=0; i<8; i++) mystack2.push(i);

// pop those numbers off the stack
System.out.println("Stack in mystack1:");
for(int i=0; i<5; i++)

System.out.println(mystack1.pop());

System.out.println("Stack in mystack2:");
for(int i=0; i<8; i++)
System.out.println(mystack2.pop());
}
}

注意,該程序創建了兩個堆棧:一個有5個元素,另一個有8個元素??梢钥闯?,數組保持它們自己長度信息的事實使創建任何大小的堆棧很容易。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97