例題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;
}
}
}
}
}