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

JAVA 數組,java數組

編輯:JAVA綜合教程

JAVA 數組,java數組


  數組對每門編程語言都是重要的數據結構之一,java語言提供的數組是用來儲存固定大小的同類型元素的。

  當你需要保存一組數據類型相同的變量或者對象時,我們不可能給每個變量都定義一個變量名,這樣的操作會使代碼臃腫、工作量大且無意義。這時我們就需要數組來保存這些數據。數組根據需要的不同分為一維數,二維數組和多維數組。下面我們來看下數組的聲明、創建和初始化。

  一、數組的聲明

  要在程序中使用數組,就需要先聲明數組,下面是聲明數組變量的語法: 

  一位數組的聲明方法: 

  type[] 數組名;(首選方法)

  type  數組名[]; (效果一樣,但不推薦)

  數組在聲明時不能指定器長度(數組中元素的個數) 

  二、數組的創建 

  Java中使用new關鍵字來創建數組的,語法如下: 

   方式1(推薦,更能表現現數組的類型)

  type[]  數組名 = new type[數組中元素個數]; 

   eg:

    int[]  a = new  int[3];

  數組名,也即應用a,指向數組元素的首地址。

   方式2(定義時直接初始化)

  type[] 變量名  =  new type[]{逗號分隔的數組元素} 

  其中紅色部分可以省掉,所以又分兩種:

  1、int[]  num=new int[]{1,2,2,3,3};

  2、int[]  num1= {1,3,6,87,4};

  其中 int[]  num=new int[]{1,2,2,3,3};第二個方括號不能加數組長度,因為數組個數是由後面花括號決定的。

  Java中的每個數組都有length屬性,表示數組的長度。

  length屬性是public final int的,即length是只讀的。數組長度一旦確定,就不能改變大小。

  

  二維數組的定義方法:

 1 int[][] table = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 5, 6, 3 } };
 2 
 3         int[][] table1 = null;
 4         table1 = new int[3][3];
 5 
 6         int[][] table2 = new int[3][3];
 7         table2[0][0] = 11;
 8         table2[0][1] = 121;
 9         table2[0][2] = 11;
10         table2[1][0] = 11;
11         table2[1][1] = 121;
12         table2[1][2] = 11;
13         table2[2][0] = 11;
14         table2[2][1] = 121;
15         table2[2][2] = 11;
16         System.out.println();

   二維數組的遍歷

1 for (int row = 0; row < table.length; row++) {
2             for (int column = 0; column < table[row].length; column++) {
3                 System.out.print(table[row][column] + "\t");
4             }
5             System.out.println();
6 }

  三、數組的初始化

 

  1.動態初始化:數組定義與為數組分配空間和賦值的操作分開進行;
  2.靜態初始化:在定義數字的同時就為數組元素分配空間並賦值;
  3.默認初始化:數組是引用類型,它的元素相當於類的成員變量,因此數組分配空間後,每個元素也被按照成員變量的規則被隱士初始化。

 

  動態實例:

 1 public class Arrays
 2 {  
 3      public static void main(String args[]) {  
 4          int a[] ;  
 5          a = new int[3] ;  
 6          a[0] = 0 ;  
 7          a[1] = 1 ;  
 8          a[2] = 2 ;  
 9          String string[] ;  
10          string= new String[3] ;  
11          string[0] = "張三";  
12          string[1] = "李四" ;  
13          string[2] =  "小明";  
14      }  
15 }  

   靜態實例:

1 public class Arrays     
2 {     
3      public static void main(String args[]) {     
4          int a[] = {0,1,2} ;     
5          String[]  string = {"張三","李四","小敏"} ;     
6      }     
7 }   

    默認實例:

1 public class Arrays     
2 {     
3      public static void main(String args[]) {     
4          int[]  a  = new int [5] ;     
5          System.out.println("" + a[3]) ;     
6      }     
7 }   

    處理數組:

  數組的元素和數組大小是確定的,並且數組的元素有多個,所以當處理數組時,我們通常使用基本for循環和增強for循環 

  示例:

  該實例完整地展示了如何創建、初始化和操縱數組:

1 public class Array { 2 2 3 3 public static void main(String[] args) { 4 4 double[] List = {1.9, 2.9, 3.4, 3.5}; 5 5 6 6 // 打印所有數組元素 7 7 for (int i = 0; i <List.length; i++) { 8 8 System.out.println(List[i] + " "); 9 9 } 10 10 // 計算所有元素的總和 11 11 double total = 0; 12 12 for (int i = 0; i < List.length; i++) { 13 13 total += List[i]; 14 14 } 15 15 System.out.println("Total is " + total); 16 16 // 查找最大元素 17 17 double max = List[0]; 18 18 for (int i = 1; i < List.length; i++) { 19 19 if (List[i] > max) { 20 20 max = List[i]; 21 21 } 22 22 } 23 23 System.out.println("Max is " + max); 24 24 } 25 25 } Array1.java

   增強for循環遍歷數組

    JDK 1.5 引進了一種新的循環類型,它能在不使用下標的情況下遍歷數組。

   該實例用來顯示數組myList中的所有元素:

 1 public class Array {
 2 
 3    public static void main(String[] args) {
 4       int[] List = {1,9,2,9,3,4,3,5};
 5 
 6       // 打印所有數組元素
 7       for (int a:List) {
 8          System.out.println(a);
 9       }
10    }
11 }

 

   數組的復制

   1、使用for循環復制

1 public class ArrayCopy { 2 3 public static void main(String[] args) { 4 int[] number = { 11, 2, 23, 12, 4, 34, 5 }; 5 int[] number1 = new int[number.length]; 6 7 if (number != null && number.length > 0) { 8 for (int i = 0; i < number.length; i++) { 9 number1[i] = number[i]; 10 } 11 12 for (int value : number1) { 13 System.out.print(value + "\t"); 14 } 15 } 16 } 17 } Array2.java

    2、copyOf方法復制數組

1 public class Text { 2 public static void main(String[] args) { 3 int[] a={2,5,2,2,2,6,2,3}; 4 5 Text t=new Text(); 6 int[] m=t.copyOf(a, a.length); 7 for(int n :m){ 8 System.out.print(n+" "); 9 } 10 11 System.out.println(); 12 13 int[] b=Arrays.copyOf(a, a.length); 14 for(int n : b){ 15 System.out.print(n+" "); 16 } 17 } 18 public static int[] copyOf(int[] b,int newLength){ 19 return b; 20 } 21 } Array3.java

   3、將指定數組的指定范圍復制到一個新數組(copyOfRange)

1 public class Text {
2     public static void main(String[] args) {
3         int[] a = { 2, 4, 2, 77, 22, 777, 34 };
4         int[] b = Arrays.copyOfRange(a, 0, 3);
5         for (int n : b) {
6             System.out.print(n + " ");
7         }
8     }
9 }

 

  數組排序

1 public class Bubble { 2 3 public static void main(String[] args) { 4 int a = 100; 5 int b = 46; 6 /* 7 * int temp = 0; temp = a; a = b; b = temp; 8 */ 9 /* 10 * a = a + b; b = a - b; a = a - b; 11 */ 12 /* 13 * a = a ^ b; b = a ^ b; a = a ^ b; 14 */ 15 16 System.out.println("a=46,b=100 " + "\t" + a + " " + b); 17 18 // 冒泡排序 19 int[] number = { 11, 2, 23, 12, 4, 34, 5 }; 20 // 11, 2, 23, 12, 4, 34, 5 21 22 System.out.println("排序前:"); 23 for (int num : number) { 24 System.out.print(num + "\t"); 25 } 26 27 for (int i = 0; i < number.length; i++) { // 控制拿出數組中的第幾個元素 28 for (int k = 0; k < number.length; k++) { 29 if (number[i] > number[k]) { 30 int temp = 0; 31 temp = number[i]; 32 number[i] = number[k]; 33 number[k] = temp; 34 } 35 } 36 } 37 38 System.out.println("\n排序後:"); 39 for (int num : number) { 40 System.out.print(num + "\t"); 41 } 42 } 43 } Array4.java

   使用sort方法排序

 1 public class Text {
 2     public static void main(String[] args) {
 3         int[] a = { 2, 4, 2, 77, 22, 777, 34 };
 4         Arrays.sort(a);
 5         for(int b:a){
 6             System.out.print(b+" ");
 7         }
 8     }
 9     
10 }

 

   產生一個不重復的隨機數組

1 public class NoRepeatArray { 2 public static void main(String[] args) { 3 System.out.println(); 4 Random rd = new Random(); 5 System.out.println(rd.nextInt(5) + 1); // 0-9之間的隨機數 6 7 // 從1-5之間生成5個不重復的隨機數 8 int[] numbers = new int[5]; 9 // 定義存儲值數組的索引 10 int index = 0; 11 System.out.println("---------------------------------\n"); 12 for (int i = 1; i <= 5; i++) { 13 Random rd1 = new Random(); 14 int num = rd1.nextInt(5) + 1; 15 16 if (numbers[0] != 0) { 17 boolean flag = false; // 控制是否存在重復元素 18 19 // 遍歷生產數組中的元素 20 for (int j = 0; j < numbers.length; j++) { 21 22 if (num != numbers[j]) { 23 flag = true; 24 } else { 25 flag = false; 26 break; 27 } 28 } 29 30 if (flag == true) { 31 numbers[index++] = num; 32 } else { 33 34 // 發現有重復元素重新產生新的隨機數 35 i--; 36 } 37 38 } else { 39 numbers[index++] = num; 40 } 41 42 } 43 44 for (int val : numbers) { 45 System.out.print(val + "\t"); 46 } 47 } 48 } Array5.java

 

 

  數組的比較

   如果兩個數組以相同順序包含相同的元素,則兩個數組是相等的。此外,如果兩個數組引用都為 null,則認為它們是相等的。

 1 public class Text {
 2     public static void main(String[] args) {
 3         int[] a = { 2, 4, 2, 77, 22, 777, 34 };
 4         int[] b = { 2, 4, 2, 77, 22, 777, 34 };
 5         int[] c = { 4, 2, 22, 77, 2, 777, 34 };
 6         
 7         boolean flag = Arrays.equals(a, b);
 8         System.out.println(flag);
 9         
10         boolean flag1=Arrays.equals(a, c);
11         System.out.println(flag1);
12     }
13 }

  以上實例編譯運行結果如下:

true
false

 

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