(一) 多個相同類型的變數 (或 物件 ) (同一機構公司,同組,同一張表單 ,可以宣告使用相同名稱,以整數索引碼去別
舉例: 第一個 陣列
class ex1
{
public static void main(String args[])
{
//int f1,f2,f3;
int [] x = new int[3]; //初始值 為O
System.out.println(x[2]);
}
}
執行結果:
範例二 : 各項資料類型 初始值
class ex1
{
public static void main(String args[])
{
//int f1,f2,f3;
//各個值 都有不同的起始 數值
//int 初始值為 0
//double 初始值為 0.0
//boolean 初始值為 false
//String 初始值為 空值
int[] x=new int[6];//int
//double[] x=new double[3]; //double
//boolean[] x=new boolean[3]; //boolean
//String[] x=new String[6]; //String
System.out.println(x);
System.out.println(x[0]);
}
}
執行結果:
I 為int double 為D 各有不同
( 二 ) 語法:
類型 [ ] 陣列名稱 = new 類型 [ n ] ;
n => 總數量
=> 個別名稱為 陣列名 [ o ] , 陣列名 [ i ] , ..............................
( 三 ) Java 的陣列偷過 new 產生,所以也有L
1.stack
2.heap
Ex:
( 四 ) 陣列值取出的方式
1. for ( ; ; )
2.for each
=>for (類型 變數 : 陣列名 )
{
}
※ 上面的分號 ": " 是 : 指定到此陣列的 ftack 位址 將heap 區變數值 copy 出來,copy前先判斷是否友值
範例: 將陣列打印出來
class ex1
{
public static void main(String args[])
{
int[] x=new int[6];
System.out.println(x);
System.out.println(x[0]);
x[0]=10;
for(int i=0;i<6;i++) //可透過 if將陣列打印
{
System.out.println("x["+i+"]="+x[i]);
}
System.out.println("========================================");
for(int o:x) //可以一直打印到 陣列結束 會全抓
{
System.out.println(o);
}
}
}
執行結果:
範例: 使用 抓去 陣列內數量
class ex1
{
public static void main(String args[])
{
int[] x=new int[7];
System.out.println(x.length); //會抓取陣列數
//如上面是 7 就會抓取7
System.out.println(x[0]);
x[0]=10; //第一個 位置的值
for(int i=0;i<x.length;i++)
{
System.out.println("x["+i+"]="+x[i]);
}
}
}
執行結果:
( 五 ) 陣列數量 計算
=> 陣列 length
(六) 陣列 初始值建立方式
1) 透過 "new" 結合 初始值
=> 靜態 初始化
2) 透過 " { } " 結合初始值 //只有給到位置 ,"new" 才會給予值 跟 位置
=> 動態初始值
範例:
class ex1
{
public static void main(String args[])
{
int[] x={10,20,30}; //將數值 放入
System.out.println(x);
System.out.println(x.length);
for(int i=0;i<x.length;i++)
{
System.out.println("x["+i+"]="+x[i]);
}
System.out.println("========================================");
for(int o:x)
{
System.out.println(o);
}
}
}
執行結果:
( 七 ) java.util.Arrays
1) sort
2)birarySearch
( 八 ) 傳值 傳位址 => " = "
1.pass by value => copy 值.
2.pass by address => 指向 同一位址
=> 回收記憶體 , 消滅
ps => 回收消滅使用 null
舉例 : 陣列排序
import java.util.Arrays; //載入
class ex1
{
public static void main(String args[])
{
int[] x={52,65,74,66,20}; //放入一個隨機數的陣列
Arrays.sort(x); //使用 Arrays.sort 排序
for(int o:x) // 會將抓去陣列內所有數字
{
System.out.println(o);
}
}
}
執行結果:
舉例: 檢查數列內的值
import java.util.Arrays; //載入
class ex1
{
public static void main(String args[])
{
int[] x={52,65,74,66,20}; //放入一個隨機數的陣列
Arrays.sort(x); //使用 Arrays.sort 排序
for(int o:x) // 會將抓去陣列內所有數字
{
System.out.println(o);
}
System.out.println("========================================");
// Arrays.binarySearch 可檢查陣列 內的數 如果沒有返回 負數
System.out.println(Arrays.binarySearch(x,65)); //檢查有沒有65 的數字 有就返回位置
System.out.println(Arrays.binarySearch(x,53)); //檢查有沒有53 的數字 沒有返回負數
}
}
執行結果:
範例: null 與 傳值
class ex1
{
public static void main(String args[])
{
int[] x={10,20,30};
int[] y={40,50,60};
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("x[0]="+x[0]);
System.out.println("y[0]="+y[0]);
System.out.println("========================");
//x=y;
x[0]=y[0]; //如果 傳值 就是 copy 值
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("x[0]="+x[0]);
System.out.println("y[0]="+y[0]);
System.out.println("========================");
y[0]=100;
System.out.println("x[0]="+x[0]);
System.out.println("y[0]="+y[0]);
x = null ; //會將記憶整個拿掉
System.out.println(x); //會輸出 null
//System.out.println(x[0]);
//上面編譯會過 但是輸出的值 為空值
System.out.println(x.length);
//編譯會過 但無法輸出 因為length 只要連接陣列 就可以
//輸出的值為 空值 null
/*
int x=10;
int y=20;
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("========================");
x=y; //如果傳位置 就只有改變位置
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("========================");
y=100;
System.out.println("x="+x);
System.out.println("y="+y);
*/
}
}
執行結果:
( 九 ) 多維陣列
1. 樹狀結構
分組的編碼方式
2.多個階段分組方式
Ex. : 2維陣列 => 2階段多組
語法:
類型 [ ] [ ] 陣名 = new 類型 [ n ] [ m ]
=> 先分 n 組 ,每組 m 個
例圖:
=> int [ ] [ ] = new int [ 2 ] [3 ]
例子:
class ex1
{
public static void main(String args[])
{
/*int[] a=new int[3];
int[] b=new int[3];*/
int[][] x=new int[2][3]; //先分2組 每組3個
}
}
範例:
class ex1
{
public static void main(String args[])
{
/*int[] a=new int[3];
int[] b=new int[3];*/
int[][] x=new int[2][3];
System.out.println(x);
System.out.println(x[0]); //可以通過編譯 出來是地址
// 不管有幾層 最後面 [] 是值
System.out.println(x[0][0]); //打印出來是值
System.out.println(x[1]);
System.out.println(x.length);
System.out.println(x[0].length);
//System.out.println(x[0][0].length); //報錯因為已經沒辦法往下才
System.out.println("=================================");
for(int i=0;i<x.length;i++) //可以將雙層內容打印出來
{
for(int j=0;j<x[i].length;j++)
{
System.out.println("x["+i+"]["+j+"]="+x[i][j]);
}
}
}
}
執行結果:
範例:
class ex1
{
public static void main(String args[])
{
int[][] x=
{
{10,20,30},
{85,74,21},
};
for(int i=0;i<x.length;i++)
{
for(int j=0;j<x[i].length;j++)
{
System.out.println("x["+i+"]["+j+"]="+x[i][j]);
}
}
}
}
執行結果:
3.不等長(非對稱) 多維陣列
a)
例子: 不對等
class ex1
{
public static void main(String args[])
{
int[][] x=
{
{10,20,30,85}, //不對等
{74,21},
};
for(int i=0;i<x.length;i++)
{
for(int j=0;j<x[i].length;j++)
{
System.out.println("x["+i+"]["+j+"]="+x[i][j]);
}
}
}
}
執行結果:
範例: 另一種放入
class ex1
{
public static void main(String args[])
{
int[][] x=new int[2][];//x[0],x[1]
x[0]=new int[4];
x[1]=new int[2];
for(int i=0;i<x.length;i++)
{
for(int j=0;j<x[i].length;j++)
{
System.out.println("x["+i+"]["+j+"]="+x[i][j]);
}
}
}
}
執行結果:
範例: 傳值方式
class ex1
{
public static void main(String args[])
{
int[][] x=new int[2][];//x[0],x[1]
//x[0]=new int[4];
//x[1]=new int[2];
int[] y1={10,52,63,74};
int[] y2={41,52};
x[0]=y1; //如果使用上方直接打印 會報錯
//可以使用 傳值的方式 將位置傳入
x[1]=y2;
for(int i=0;i<x.length;i++)
{
for(int j=0;j<x[i].length;j++)
{
System.out.println("x["+i+"]["+j+"]="+x[i][j]);
}
}
}
}
執行結果:
b)
例子一 可以這樣創建
class ex1
{
public static void main(String args[])
{
int[][][] x=new int[2][][];
x[0]=new int[3][];
x[0][0]=new int[2];
x[0][1]=new int[3];
x[0][2]=new int[4];
x[1]=new int[2][3];
}
}
範例二 : 應運 加入數值
class ex1
{
public static void main(String args[])
{
int[][][] x=new int[2][][];
/*
x[0]=new int[3][];
x[0][0]=new int[2];
x[0][1]=new int[3];
x[0][2]=new int[4];
x[1]=new int[2][3];
*/
int[] y1={10,20};
int[] y2={65,85,74};
int[] y3={77,85,96,36};
int[][] y4=
{
{52,65,74},
{77,65,96},
};
x[0]=new int[3][];
x[0][0]=y1;
x[0][1]=y2;
x[0][2]=y3; //這邊看位置 不是數量 數量已經在上面附值了
x[1]=y4;
for(int i=0;i<x.length;i++)
{
for(int j=0;j<x[i].length;j++)
{
for(int k=0;k<x[i][j].length;k++)
{
System.out.println("x["+i+"]["+j+"]["+k+"]="+x[i][j][k]);
}
System.out.println();
}
}
}
}
執行結果
.結合物件導向 應用
1.先定義 陣列變數名稱
2.在個實例化 "new " 物件內容
例子:
class student
{
private String name;
private int chi;
private int eng;
private int sum;
student(String name,int chi,int eng)
{
this.name=name;
this.chi=chi;
this.eng=eng;
sum=chi+eng;
}
String show()
{
return "名 :"+name+
"\t國文:"+chi+
"\t英文:"+eng+
"\t總分:"+sum;
}
}
class add
{
public static void main(String args[])
{
/*
student[] s=new student[3];//s[0],s[1],s[2]-->名字
s[0]=new student("a1",75,85);
s[1]=new student("a2",75,85);
s[2]=new student("a3",75,85);
*/
student[] s=
{
new student("a1",75,85),
new student("a2",75,85),
new student("a3",75,85),
};
System.out.println(s);
System.out.println(s[0]);
System.out.println(s[0].show());
System.out.println("====================");
for(int i=0;i<s.length;i++)
{
System.out.println("s="+s+"\ts["+i+"]="+s[i]+"\t"+s[i].show());
}
/*
student s1=new student("a1",75,85);
student s2=new student("a2",75,85);
student s3=new student("a3",75,85);
System.out.println(s1.show());
System.out.println(s2.show());
System.out.println(s3.show());
*/
}
}
不對稱
新增說明文字 |
class add2 { public static void main(String args[]) { /* student[][] s=new student[2][]; s[0]=new student[2]; s[1]=new student[3]; s[0][0]=new student("a",74,85); s[0][1]=new student("a",74,85); s[1][0]=new student("a",74,85); s[1][1]=new student("a",74,85); s[1][2]=new student("a",74,85); */ student[][] s= { { new student("a",74,85), new student("a",74,85) } , { new student("b1",74,85), new student("b2",74,85), new student("b3",74,85), } }; for(int i=0;i<s.length;i++) { for(int j=0;j<s[i].length;j++) { System.out.println("s["+i+"]["+j+"]="+s[i][j]+"\t"+s[i][j].show()); } } } }
執行結果:
沒有留言:
張貼留言