從例題中學數組

例題1:交換兩個數

方法一:數學方法交換

public class HelloWorld {
	public static void main(String[] args) {
		int a = 7;
		int b = 2;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
		System.out.println("---------------");
		a = a + b;
		b = a - b;
		a = a - b;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
	}
}

在這裏插入圖片描述
方法二:利用一箇中間值轉換

public class HelloWorld {
	public static void main(String[] args) {
		int a = 7;
		int b = 2;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
		System.out.println("---------------");
		int c=a;
		   a=b;
		   b=c;
		System.out.println("a=" + a);
		System.out.println("b=" + b);
	}
}

【注意】:下面這個程序中調用swap方法,x,y是原生數據類型x,y只是把值傳過去了,賦完值後,x,y的值還是沒有變,不會因爲調用這個函數而把值改變。

public class HelloWorld {
	public static void swap(int a,int b){
		int temp=a;
		a=b;
		b=temp;
	}
	public static void main(String[] args) {
		int x=3;
		int y=4;
		HelloWorld.swap(x, y);
		System.out.println(x);
		System.out.println(y);
	}
}

在這裏插入圖片描述
方法三:數組

	public static void swap(int [] a){
		int c=a[1];
		a[1]=a[0];
		a[0]=c;	
	}
	public static void main(String[]args){
		int []a={7,2};
	      swap(a);
		System.out.println(a[0]);
		System.out.println(a[1]);
	}
}

在這裏插入圖片描述
【說明】:數組變量本身就是一個引用,調用swap方法的時候,數組a也指向原來的數組,進行交換。在這裏插入圖片描述

例子2:接口

public class HelloWorld {
	public static void main(String[]args){
		I[]is=new I[2];//1
		is[0]=new C();//2
		is[1]=new C();//3   這三行代碼可以寫成 I[] is=new I[]{new C(),new C()};
	}
}
interface I{
}
class C implements I{	
}

【說明】:上面程序可以編譯成功,接口是不能創建接口實例的,而 I[]is=new I[2];只是生成了一個數組對象之外,並沒有生成一個接口實例,就像I j=null;語句,生成了I類型的引用,但是指向爲空,它可以指向任何子類。這僅僅是定義了一個數組的聲明:告訴編譯器生成了一個I類型的長度爲2的數組,數組的元素不指向任何對象。

例子3:判斷數組是否相同,1)數組長度相同,2)數組各個元素值相同

方法一:

public class HelloWorld {
	public static void main(String[]args){
	int [] a={1,2,3};
	int [] b={1,2,3};
	System.out.println(isEquals(a,b));
}
	private static boolean isEquals(int[] a, int[] b) {
		// TODO Auto-generated method stub
		if (a==null||b==null) {
			return false;
		}
		if (a.length==b.length) {
			for (int i = 0; i < a.length; i++) {
				if(a[i]==b[i]){
					return true;
					}
		}
		}
		return false;		
	}
}

輸出結果:true

方法二:

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[]args){
	int [] a={1,2,3};
	int [] b={1,2,3};
	System.out.println(isEquals(a,b));
	System.out.println(Arrays.equals(a,b));
}
	private static boolean isEquals(int[] a, int[] b) {
		// TODO Auto-generated method stub
		if (a==null||b==null) {
			return false;
		}
		if (a.length!=b.length) {
			return false;
		}
		for (int i = 0; i < a.length; i++) {
			if(a[i]!=b[i])
				return false;
		}
		return true;		
	}
}

輸出結果:
true
true

例子4:關於Arrays

java中的JDK提供了一個類Arrays,裏面的方法專門用來對數組進行一些輔助功能的動作。
1)可以進行輸出數組,通過調用Arrays裏的toString()方法來輸出數組。

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[]args){
			int []arr={1,2,3,4,5,6,7,8,9,0};
			System.out.println(Arrays.toString(arr));
	}
}

輸出數組:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

2)可以排序,通過調用Arrays裏的sort()方法

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[]args){
			int []arr={1,8,9,4,5,6,1,4,5,0};
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));
	}
}

輸出結果:
[0, 1, 1, 4, 4, 5, 5, 6, 8, 9]

例子5:拷貝數組

寫一個程序將a數組中的前三個元素內容拷貝到b數組中?

public class HelloWorld {
	public static void main(String[]args){
			int []a={1,8,9,4,5,6,1,4,5,0};
		  int []b={4,5,6,4,5,7};
		  /*
		   * a-->源數組,待拷貝的數組
		   * 0-->源數組當中的起始位置,從源數組中的哪個位置開始拷貝
		   * b-->目標數組,元素拷貝到這個數組中
		   * 0-->目標數組當中的起始位置
		   * 3-->待拷貝的數組的個數,也就是需要拷貝多少長度的數組
		   * 這是個static方法,位於java.lang包下,不需要導入,直接用
		   */
		 System.arraycopy(a, 0, b, 1, 3);
		 for (int i = 0; i < b.length; i++) {
			System.out.println(b[i]+" ");
		}
	}
}

輸出結果:
4
1
8
9
5
7

例子6:三維數組

三維數組實際開發中用的很少,一般用再遊戲開發中,遊戲開發需要很多數學知識,矩陣,傅立葉等。
三維數組定義格式:type[][][] a = new type[2][3][4];
三維數組可以理解爲:數組的數組的數組。三維數組也可以是不規則的。


public class HelloWorld {
	public static void main(String[]args){
            int[][][]arr=new int[2][3][4];
            System.out.println(arr instanceof Object);//爲true,說明數組arr是一個對象
	          System.out.println(arr instanceof int[][][]);//爲true,說明數組arr是一個三維數組,類型是int[][][]
	          System.out.println(arr[0] instanceof int[][]);//爲true,說明數組arr[0]是一個二維數組,類型是int[][]
	          System.out.println(arr[0][0]instanceof int[]);//爲true,說明數組arr[0][0]是一個一維數組,類型是int
	for (int i = 0; i < arr.length; i++) {
		for (int j = 0; j < arr[i].length; j++) {
			for (int k = 0; k < arr[i][j].length; k++) {
				arr[i][j][k]=100;
			}
		}		
	}	
	}
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章