程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 數組在Java編程中的應用

數組在Java編程中的應用

編輯:關於JAVA

數組是很重要的數據結構,由同一類型相關的數據結構組成是靜態實體,有鏈 表,隊列,堆棧,數等數據結構,java還提出了類數組的類vector。這些都是java數 據結構的組成部分,正如我們學過的c語言版的數據結構,java數據結構也是來描 述數據結構的只是描述語言是java一樣而已。

1.數組中最重要的是數組下標,數組下標及數組名是用來給訪問者提供訪問 數組的途徑,數據下標從0開始,c[0],就是一個第一個數據第一個元素是c[i- 1],數組名的名名規則與變量相同,其訪問格式也很簡單。

例:c.lenth就是數組的長度。

c[a+b]+=2 就是個數組a+b的值+2,在此數組也有易混淆的地方,那就是數組 的第7個元素和數組元素7是兩個不相同的概念,初學者一定要區分其區別。

2.空間分配:任何數據都要占用空間,數組也不例外,java中用new來給一個 新的數組分配空間。

例:

int c[ ]=new int[12];

其格式等同於

int c[];
c=new int[12];

他們的初始化值都是0。

一個數組可以同時聲明多個數組:

例:

string b[ ]=new String[100],x[ ]=new String[27];

數組可以聲明任何數據類型,double string ..

舉個例子來分析:

// Fig. 7.5: InitArray.java
// initialize array n to the even integers from 2 to 20
import javax.swing.*;
public class InitArray {
public static void main( String args[] )
{
final int ARRAY_SIZE = 10;
int n[]; // reference to int array
String output = "";
n = new int[ ARRAY_SIZE ]; // allocate array
// Set the values in the array
for ( int i = 0; i < n.length; i++ )
n[ i ] = 2 + 2 * i;
output += "Subscript\tValue\n";
for ( int i = 0; i < n.length; i++ )
output += i + "\t" + n[ i ] + "\n";
JTextArea outputArea = new JTextArea( 11, 10 );
outputArea.setText( output );
JOptionPane.showMessageDialog( null, outputArea,
"Initializing to Even Numbers from 2 to 20",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}

程序中:

1.final int ARRAY_SIZE=10限定詞final聲明常數變量ARRAY_SIZE其值是10 。

2. n = new int[ ARRAY_SIZE ]聲明了n數組其長度不能超過10

3.for ( int i = 0; i < n.length; i++ ) n[ i ] = 2 + 2 * i; 指定 了程序的方法即輸出10個從2開始的偶數.其下標分別計為0-9的10個數。

4.output += "Subscript\tValue\n";

for ( int i = 0; i < n.length; i++ )

output += i + "\t" + n[ i ] + "\n"; 在output後面追加字符串.顯示數 組下標即計算結果.

5 JTextArea outputArea = new JTextArea( 11, 10 );

outputArea.setText( output );

創建一個新的文本框,把output放入其中.

JOptionPane.showMessageDialog( null, outputArea,"Initializing to Even Numbers from 2 to 20",JOptionPane.INFORMATION_MESSAGE );

顯示文本框.

由前3個過程你可以看到了數組是怎樣建立的了.

3.引用及引用參數:許多編程語言都有通過值的調用 callby value傳遞參數, 當使用調用值時,將產生數值的一個拷貝並傳遞給被調用的方法.

例如.

int hourly Temperatrue[ ]=new int[24];
modify Array(hourlyTemperatrue);

以一個例子說明:

// Fig. 7.10: PassArray.java
// Passing arrays and individual array elements to methods
import java.awt.Container;
import javax.swing.*;
public class ArrayPass extends JApplet {
JTextArea outputArea;
String output;
public void init()
{
outputArea = new JTextArea();
Container c = getContentPane();
c.add( outputArea );
int a[] = { 1, 2, 3, 4, 5 };
output = "Effects of passing entire " +
"array call-by-reference:\n" +
"The values of the original array are:\n";
for ( int i = 0; i < a.length; i++ )
output += " " + a[ i ];
modifyArray( a ); // array a passed call-by-reference
output += "\n\nThe values of the modified array are:\n";
for ( int i = 0; i < a.length; i++ )
output += " " + a[ i ];
output += "\n\nEffects of passing array " +
"element call-by-value:\n" +
"a[3] before modifyElement: " + a[ 3 ];
modifyElement( a[ 3 ] );
output += "\na[3] after modifyElement: " + a[ 3 ];
outputArea.setText( output );
}
public void modifyArray( int b[] )
{
for ( int j = 0; j < b.length; j++ )
b[ j ] *= 2;
}
public void modifyElement( int e )
{
e *= 2;
}
}

分析:

1. outputArea = new JTextArea();

Container c = getContentPane();

c.add( outputArea ); 定義一個container用來輸出結果.

2. int a[] = { 1, 2, 3, 4, 5 };定義數組a[]

3. output = "Effects of passing entire " +

array call-by-reference:\n" +

"The values of the original array are:\n";

在output字符串後追加標記

for ( int i = 0; i < a.length; i++ )

output += " " + a[ i ]; 在TextArea上輸出a[i]為1,2,3,4,5

4. modifyArray( a ); // array a passed call-by-reference

引用參數

output += "\n\nThe values of the modified array are:\n";

追加字符

for ( int i = 0; i < a.length; i++ )

output += " " + a[ i ];

循環顯示

output += "\n\nEffects of passing array " +
"element call-by-value:\n" +
"a[3] before modifyElement: " + a[ 3 ] 與返回類 結合
public void modifyArray( int b[] )
{
for ( int j = 0; j < b.length; j++ )
b[ j ] *= 2;
}

返回了計算後的a[]=b[j]*2 b[j]是臨時的 此處體現callby value 數組b是 一個拷貝,計算結束後傳遞給被調用的方法,b在計算後自動銷毀。

輸出的結果是a[3] brefore modifyelment:8

5.modifyElement( a[ 3 ] );

output += "\na[3] after modifyElement: " + a[ 3 ];

outputArea.setText( output );與 過程結合

public void modifyElement( int e )

{

e *= 2;

}

返回了計算後的a[3]after modifyelment:8 e是臨時變量,運行後自動銷毀。

5. 數組排序:排序使程序按某種順序進行排列,升序或降序.這是計算機數據 處理中中應用最多的一項.例如銀行的帳戶排序,工資排序等.在次不作過多介紹 。

6.數組查找:分線性插找和折半查找:對於小型的數組線性查找效果可能很好 ,對於大型數據效率就很低了,可以用折半查找,效率會很大的提高,折半查找 的方法是,例如查找含63個元素只需要比較6次大小 第一次查找下標 (1+63)/2=32查找 若大於關鍵子,則到下標為1-32中查找,若小與關鍵子,則到 33-63中查找,若找不到,繼續到下一個范圍中找,就是在將32分半,以上面的方 法以此類推,只道找到為止。

而查找的最多比較次數:滿足2的k次方大於n的k次的最小整數值。由此可推 算對於10億個數組來說用線性查找5億次和用折半查找30次是多麼大的差距。

7.和其他語言的多維數組基本形式都一樣,在次不作分析。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved