參考資料型別(Reference Types)
[一維矩陣]
宣告格式:資料型別[ ] 陣列名稱、資料型別 陣列名稱[ ]、
資料型別 [ ]陣列名稱等,普遍採用- 資料型別[ ] 陣列名稱。
例:int[ ] a、int a[ ]、int [ ]a。
宣告矩陣長度:建立物件時指定,a = new int[10]時變數長度為10,即有10個元素。矩陣元素位址由0起算,如下列10個元素位址為由0~9:
|
a[0]
|
a[1]
|
a[2]
|
a[03]
|
a[04]
|
a[5]
|
a[6]
|
a[7]
|
a[8]
|
a[9]
|
a[0]、a[1]…a[9]存放參考位址,可依此位址找到相對應之值如下10、20…100:
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
|
10
|
20
|
30
|
40
|
50
|
60
|
70
|
80
|
90
|
100
|
矩陣元素值之指定方式:
個別指定:a[0]=10,
a[1]=20, a[2]=30 ........ , a[9]=100;
宣告時集體指定:int[ ] a = {10,20,30,40,50,60,70,80,90,100};
建立物件時指定:int[ ] b; b
= new int[ ] {200,300}
[一維矩陣內建物件例]
a[0] a[1]
|
10
|
20
|
class Array1 {
public
static void main(String[] args) {
int[] a; //宣告整數資料型別一為陣列a
a = new int[2]; //建立物件時指定陣列元素個數2
a[0] = 10; //指定第一個元素的值10
a[1] = 20; //指定第二個元素的值20
System.out.println("a[0] = "+a[0]);
System.out.println("a[1] = "+a[1]); } }
命令提示字元下輸入:C:\js>java Array1
執行結果:
a[0] = 10
a[1] = 20
[一維矩陣建構物件例]
class MyNumber1 {
int
number;
}
class Array1 {
public
static void main(String[] args) {
MyNumber1[ ] b; //MyNumber1為自行設計之建構物件
b = new MyNumber1
[2];
b[0] = new MyNumber1 (); //自行設計之建構物件需以new對每一矩陣元素
b[1] = new MyNumber1 (); //建立物件
b[0].number = 30;
b[1].number = 40;
System.out.println("b[0].number=
"+b[0].number);
System.out.println("b[1].number=
"+b[1].number);
}
}
執行結果:C:\js>java Array1
b[0].number= 30
b[1].number= 40
矩陣可代表同類型(資料型別)資料
MyNumber1[ ]
b ; MyNumber1 b;
b = new MyNumber1[2]
; MyNumber1 c;
b[0] = new MyNumber1()
; 可達相同功能 b = new MyNumber1( );
b[1] = new MyNumber1()
; ----------------à c = new MyNumber1(
);
b[0].number =
30; b.number =
30;
b[1].number
= 40; c.number =
40;
*b[0]、b[1]存放MyNumber1物件之參考位址。
[使用{ }指定各矩陣元素之值]
class Array3 {
public
static void main (String[] args) {
int[] f
= {10,20}; //指定方法一
int[] g;
g = new int[ ] {30,40}; //指定方法二
System.out.println("f[0] = "+f[0]);
System.out.println("f[1] = "+f[1]);
System.out.println("g[0] = "+g[0]);
System.out.println("g[1]
= "+g[1]);
}
}
命令提示字元下輸入:C:\js>java Array3
執行結果:
f[0] = 10
f[1] = 20
g[0] = 30
g[1] = 40
[多維矩陣(Multidimensional
Array)]
分為對稱多維矩陣及非對稱多維矩陣。
[對稱多維矩陣(Rectangular Multidimensional Array)]
第二維之矩陣元素個數相同。
宣告格式:資料型別[ ][ ][ ].... 陣列名稱
例:int[ ][ ] a、int a[ ][ ][ ]。
宣告矩陣各維長度:建立物件時指定,a = new int[3][9]時第一維長度為3,第二維長度為9,共有27個元素。矩陣元素位址為00、01、02、.....、08;10、12、13、.....、18;20、21、22、.....、28,如下列二維矩陣:
二維矩陣例:int[3][9]
|
a[0][0]
|
a[0][1]
|
a[0][2]
|
a[0][3]
|
a[0][4]
|
a[0][5]
|
a[0][6]
|
a[0][7]
|
a[0][8]
|
|
a[1][0]
|
a[1][1]
|
a[1][2]
|
a[1][3]
|
a[1][4]
|
a[1][5]
|
a[1][6]
|
a[1][7]
|
a[1][8]
|
|
a[2][0]
|
a[2][1]
|
a[2][2]
|
a[2][3]
|
a[2][4]
|
a[2][5]
|
a[2][6]
|
a[2][7]
|
a[2][8]
|
矩陣元素值之指定方式:int[2] [3] a個別指定:a[0][0]=10, a[0][1]=20, a[0][2]=30,
a[1][0]=40,a[1][1]=50,a[1][2]=60;
宣告時集體指定:使用{ },int[ ][ ] a = {{10,20,30},{40,50,60}};
建立物件時指定:使用{ },int[ ][ ] b; b = new int[ ][ ]
{{10,20,30},{40,50,60}};
對稱多維矩陣內建物件例:
class Marray4 {
public
static void main(String[] args) {
int[][]
a;
a = new
int[2][2];
a[0][0]
= 10;
a[0][1]
= 20;
a[1][0]
= 30;
a[1][1]
= 40;
System.out.println("a[0][0] = "+a[0][0]);
System.out.println("a[0][1] = "+a[0][1]);
System.out.println("a[1][0] = "+a[1][0]);
System.out.println("a[1][1] = "+a[1][1]);
}
}
命令提示字元下輸入:C:\js>java Marray4
執行結果:
a[0][0] = 10
a[0][1] = 20
a[1][0] = 30
a[1][1] = 40
[對稱多維矩陣建構物件例]
class MyNumber2 {
int n;
}
class Marray5 {
public
static void main(String[] args) {
MyNumber2
[][] b;
b =
new MyNumber2 [2][2];
b[0][0] =
new MyNumber2();
b[0][1] =
new MyNumber2();
b[1][0] =
new MyNumber2();
b[1][1] =
new MyNumber2();
b[0][0].n =
50;
b[0][1].n =
60;
b[1][0].n =
70;
b[1][1].n =
80;
System.out.println("b[0][0].n
= "+b[0][0].n);
System.out.println("b[0][1].n
= "+b[0][1].n);
System.out.println("b[1][0].n
= "+b[1][0].n);
System.out.println("b[1][1].n
= "+b[1][1].n);
}
}
命令提示字元下輸入:C:\js>java Marray5
執行結果:
b[0][0].n = 50
b[0][1].n = 60
b[1][0].n = 70
b[1][1].n = 80
以{ }設定對稱多維矩陣各元素之值(方式1):
class Marray61 {
public
static void main (String[] args) {
int[][] a = {{10,20},{30,40}};
System.out.println("a[0][0]
= "+a[0][0]);
System.out.println("a[0][1]
= "+a[0][1]);
System.out.println("a[1][0]
= "+a[1][0]);
System.out.println("a[1][1]
= "+a[1][1]);
}
}
命令提示字元下輸入:C:\js>java Marray61
執行結果:
a[0][0] = 10
a[0][1] = 20
a[1][0] = 30
a[1][1] = 40
以{ }設定對稱多維矩陣各元素之值(方式2):
class Marray62 {
public
static void main (String[] args) {
int[][] a ;
a = new int
[2][2];
a[0] =
new int[] {10,20};
a[1] =
new int[] {30,40};
System.out.println("a[0][0]
= "+a[0][0]);
System.out.println("a[0][1]
= "+a[0][1]);
System.out.println("a[1][0]
= "+a[1][0]);
System.out.println("a[1][1]
= "+a[1][1]);
}
}
命令提示字元下輸入:C:\js>java Marray62
執行結果:
a[0][0] = 10
a[0][1] = 20
a[1][0] = 30
a[1][1] = 40
[非對稱多維矩陣(Non-Rectangular Multidimensional Array)]
第二維之矩陣元素個數不同。
宣告格式:資料型別[ ][ ] 陣列名稱,例如int[ ][ ] a;
宣告矩陣各維長度:建立物件時指定,第一維指定元素個數,第二維暫不指定元素個數,於第二維建立物件時分別指定。
例:a=new int[2][ ];
a[0]=new int[2]; a[1]=new int[3]
如下列二維非對稱矩陣:
|
a[0][0]
|
a[0][1]
|
|
|
a[1][0]
|
a[1][1]
|
a[1][2]
|
矩陣元素值之指定方式:int[2] [3]
個別指定:a[0][0]=10, a[0][1]=20,
a[1][0]=30,a[1][1]=40,a[1][2]=50;
宣告時集體指定:使用{ },int[ ][ ] a = {{10,20},{30,40,50}};
建立物件時指定:使用{ },int[ ][ ] b; b[0] = new int[ ]{10,20};
b[1] = new
int[ ]{30,40,50};
class Marray7 {
public
static void main(String[] args) {
int[][]
a;
a = new int[2][ ];
a[0] = new int[2];
a[1] = new int[3];
a[0][0] = 10;
a[0][1] = 20;
a[1][0] = 30;
a[1][1] = 40;
a[1][2] = 50;
System.out.println("a[0][0] =
"+a[0][0]);
System.out.println("a[0][1] =
"+a[0][1]);
System.out.println("a[1][0] =
"+a[1][0]);
System.out.println("a[1][1] =
"+a[1][1]);
System.out.println("a[1][2] =
"+a[1][2]); } }
命令提示字元下輸入:C:\js>java Marray7
執行結果:
a[0][0] = 10
a[0][1] = 20
a[1][0] = 30
a[1][1] = 40
a[1][2] = 50
以{ }設定各元素之值(方式1):
class Marray8 {
public
static void main (String[] args) {
int[][] a = {{10,20},{30,40,50}};
System.out.println("a[0][0] =
"+a[0][0]);
System.out.println("a[0][1] =
"+a[0][1]);
System.out.println("a[1][0] =
"+a[1][0]);
System.out.println("a[1][1] = "+a[1][1]);
System.out.println("a[1][2] =
"+a[1][2]); } }
命令提示字元下輸入:C:\js>java Marray8
執行結果:
a[0][0] = 10
a[0][1] = 20
a[1][0] = 30
a[1][1] = 40
a[1][2] = 50
以{ }設定各元素之值(方式2):
class Marray9 {
public
static void main (String[] args) {
int[][] a;
a = new int[2][];
a[0] = new int[] {101};
a[0] = new int[] {202,302,402};
System.out.println("a[0][0] =
"+a[0][0]);
System.out.println("a[1][0] =
"+a[1][0]);
System.out.println("a[1][1] =
"+a[1][1]);
System.out.println("a[1][2] =
"+a[1][2]); } }
命令提示字元下輸入:C:\js>java Marray9
執行結果:
a[0][0] = 101
a[1][0] = 202
a[1][1] = 302
a[1][2] = 402
以內建物件String為資料型態(Data Type),宣告字串變數。
String s = “abcd” ;
或使用new建立內建物件,產生包含指定字串之新物件。
String t = new String( “abcd” ) ;
class String1 {
public
static void main (String[] args) {
String
s;
s =
"abcd"; //或二行合併 String s = "abcd";
System.out.println("s = "+s);
String
t;
t = new
String("wxyz"); //或二行合併 String t = new String("wxyz");
System.out.println("t = "+t);
}
}
命令提示字元下輸入:C:\js>java String1
執行結果:
s = abcd
t = wxyz
為自行設計之建構物件,即自建類別物件。
class MyNumber8 {
int i;
}
class Obj2 {
public
static void main(String[] args) {
int j;
j=3;
MyNumber8 a;
a = new MyNumber8();
a.i = 5;
System.out.println("j
= "+j);
System.out.println("a.i = "+a.i);
}
}
命令提示字元下輸入:C:\js>java Obj2
執行結果:
j = 3
a.i = 5
沒有留言:
張貼留言