[ 배열 ]
* 배열이란?
- reference type > array
- 자료형 [] 참조변수명;
자료형 참조변수명 [];
- 참조변수명 = new 자료형[5];
int[] m;
m = new int [5]
- stack에 m이라는 공간이 할당됨 > 그 공간에 10이라는 값이 저장
- heap이라는 영역에 새롭게 int 크기로 세 칸의 연속된 공간의 변수를 만듦
실제 할당되는 메모리 주소(참조값) -> stack의 'm'에 할당됨
아래부터 m[0], m[1], m[2]
* 배열의 선언 및 데이터 대입 / 할당
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package day04;
public class ArrayEx02 {
public static void main(String[] args) {
// int 타입 배열 5칸 짜리 c 배열
// int i;
int[] c; // int c[];
// System.out.println("c : " + c); // error : 초기화 안해서
// 5개의 배열 요소를 갖도록 하자.
c = new int[5];
// 자료형의 기본값 : 0으로
// boolean : false
// String : null
// float : 0.0f
// double : 0.0d
System.out.println("c[4] : " + c[4]);
System.out.println("c : " + c);
// 배열의 길이
System.out.println("배열의 길이 : " + c.length);
// c[0] = 5;
// c[1] = 10;
// c[2] = 15;
// c[3] = 20;
// c[4] = 25;
for(int i = 0; i <c.length; i++) {
c[i] = (i+1)*5;
System.out.println("c["+i+"] : "+ c[i]);
}
System.out.println("-----------------------");
// 정수형 변수 d를 선언
// 3칸짜리 배열로 선언
int[] d = new int [3];
// 100, 200, 300을 대입
// 출력
for(int i = 0; i<d.length;i++) {
d[i] = (i+1) * 100;
System.out.println("d["+i+"] : " + d[i]);
}
System.out.println("-----------------------");
// int형 배열 m을 선언 후 29, 16, 99 데이터를 할당
int[] m = {29, 16, 99};
// 반복문으로 출력
for(int i = 0; i<m.length; i++) {
System.out.println("m["+i+"] : "+ m[i]);
}
}
}
|
cs |
* 배열의 선언 및 배열 간 덧셈
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package day05;
public class ArrayEx03 {
public static void main(String[] args) {
int[] a = { 10, 50, 30, 40, 60 };
int[] b = { 20, 10, 90, 120, 160};
// int c 배열 5칸짜리
int[] c = new int[5];
// c 배열에 a+b 대입 : 30 60 120 160 220
// c 배열 요소를 출력
for(int i = 0; i<c.length; i++) {
c[i] = a[i] + b[i];
System.out.println("c["+i+"] : " + c[i]);
}
}
}
|
cs |
* char 배열 선언 및 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package day05;
public class ArrayEx04 {
public static void main(String[] args) {
// 1. char 배열
char[] ch = {'j', 'a', 'v', 'a', ' ', 'w', 'o', 'r', 'l', 'd'};
// 2. 배열 안에 있는 요소를 하나씩 꺼내서 출력
// println ==> print
for(int i = 0; i<ch.length; i++) {
System.out.print(ch[i]);
}
System.out.println("\n-----------------");
// 역순으로 출력
// dlrow avaj
// System.out.println(ch[9]);
for(int i = (ch.length-1); i>=0; i--) {
System.out.print(ch[i]);
}
System.out.println("\n-----------------");
// String은 클래스
String str = "java world";
System.out.println(str);
}
}
|
cs |
* 2차원 배열 선언 및 데이터 대입 / 할당
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package day05;
public class ArrayEx05 {
public static void main(String[] args) {
// 2차원 배열
// int[][] m = new int [행][열];
// int형 2차원 배열 m 선언 후에 3행 2열 배열 할당
int[][] m = new int[3][2];
System.out.println("m : " + m);
System.out.println("m.length : " + m.length);
System.out.println("m[0] : " + m[0]);
System.out.println("m[0].length : " + m[0].length);
System.out.println("m[0][0] : " + m[0][0]);
System.out.println("--------------------------");
int cnt = 0;
for(int j = 0; j<3; j++) {
for(int i = 0; i<2; i++) {
cnt++;
m[j][i] = cnt;
System.out.println("m["+j+"]["+i+"] => "+ m[j][i]);
}
}
// m[0][0] = 1;
// m[0][1] = 2;
//
// for(int i = 0; i<2; i++) {
// cnt++;
// m[1][i] = cnt;
// }
// m[1][0] = 3;
// m[1][1] = 4;
//
// for(int i = 0; i<2; i++) {
// cnt++;
// m[2][i] = cnt;
// }
// m[2][0] = 5;
// m[2][1] = 6;
// System.out.println("m[0][0] : " + m[0][0]);
// System.out.println("m[0][1] : " + m[0][1]);
// System.out.println("m[1][0] : " + m[1][0]);
// System.out.println("m[1][1] : " + m[1][1]);
// System.out.println("m[2][0] : " + m[2][0]);
// System.out.println("m[2][1] : " + m[2][1]);
}
}
|
cs |
* int 형 배열과 2차원 배열에 데이터 입력 및 출력 > for문과 length 활용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package day05;
public class ArrayEx06 {
public static void main(String[] args) {
// int형 배열 n에 데이터 입력하고 화면에 출력
// 14, 2, 32, 12 < ==
// int[] n = new int[4];
// n[0] = 14;
// n[1] = 2;
// n[2] = 32;
// n[3] = 12;
int[] n = {14, 2, 32, 12};
for(int i = 0; i<n.length; i++) {
System.out.println("n["+i+"] : " + n[i]);
}
System.out.println("----------------");
int[][] m = {
// 한 행씩
{0, 0, 0},
{0, 1, 2, 1, 3, 2, 5},
{0, 2, 4, 3, 8},
{0, 2, 7, 8}
};
for(int j=0; j < m.length; j++) {
for(int i=0; i < m[j].length ;i++) {
System.out.println("m["+j+"]["+i+"] : " + m[j][i]);
}
}
// // m[0]행 출력
// for(int i = 0; i < m[0].length; i++) {
// System.out.println("m[0]["+i+"] : " + m[0][i]);
// }
//
// // m[1]행 출력
// for(int i = 0; i < m[1].length; i++) {
// System.out.println("m[1]["+i+"] : " + m[1][i]);
// }
//
// // m[2]행 출력
// for(int i = 0; i < m[2].length; i++) {
// System.out.println("m[2]["+i+"] : " + m[2][i]);
// }
//
// // m[3]행 출력
// for(int i = 0; i < m[3].length; i++) {
// System.out.println("m[3]["+i+"] : " + m[3][i]);
// }
}
}
|
cs |
[ 실습 ]
* 두 2차원 배열에 대한 덧셈
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package day05;
// 두 행렬에 대한 덧셈을 구하시오.
public class Day05Q001 {
public static void main(String[] args) {
int[][] m = {
{3, 2, 3},
{4, 5, 6},
{1, 4, 9}
};
int[][] n = {
{1, 8, 7},
{6, 4, 4},
{3, 2, 3}
};
int [][] c = new int [3][3];
for(int j=0; j<=2; j++) {
for(int i=0; i<=2; i++) {
c[j][i] = m[j][i] + n[j][i];
System.out.println("c["+j+"]["+i+"} : " +c[j][i]);
}
}
}
}
|
cs |
* 반복문(for문)을 통한 5행 5열 짜리 배열 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package day05;
// 반복문을 통해 5행 5열 짜리 배열 출력
public class Day05Q002 {
public static void main(String[] args) {
int cnt = 0;
int[][] m = new int [5][5];
for(int j = 0; j<m.length; j++) {
for(int i = 0; i<m[j].length; i++) {
cnt++;
m[j][i] = cnt;
System.out.print(m[j][i]+"\t");
}
System.out.println();
}
}
}
|
cs |
* 사용자로부터 국어 성적 10개를 입력 받아(Scanner) 총점과 평균을 출력 > 배열 활용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package day05;
import java.util.Scanner;
// 사용자로부터 국어 성적 10개를 입력 받아
// 총점과 평균을 출력하는 코드를 작성(단, 배열을 사용)
public class Day05Q003 {
public static void main(String[] args) {
// 배열 선언하기
int[] m = new int[10];
Scanner sc = new Scanner(System.in);
// 반복문을 사용해서 사용자로부터 입력된 값을 배열에 담기
for(int i = 0; i<m.length; i++) {
System.out.println((i+1)+"번째 입력 : ");
m[i] = sc.nextInt();
System.out.println("score : " + m[i]);
}
// 배열 요소 합계
int tot = 0;
for(int i=0; i<m.length;i++) {
tot += m[i];
}
System.out.println("합계 : " + tot);
// 평균
float avg = tot/10.0f;
System.out.println("평균 : " + avg);
// 합계와 평균을 출력
}
}
|
cs |