남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
2차원 배열
- 테이블 형태의 데이터를 저장하기 위한 배열
2차원 배열 선언
- int[][] score = new int[4][3]; // 4행 3열의 2차원 배열 생성
2차원 배열 인덱스
- int[][] score = new int[4][3];
- 행 인덱스는 0~ 행의 길이 -1 : 0~3 까지
- 열 인덱스는 0~ 열의 길이 -1 : 0~2 까지
score[0][0] | score[0][1] | score[0][2] |
score[1][0] | score[1][1] | score[1][2] |
score[2][0] | score[2][1] | score[2][2] |
score[3][0] | score[3][1] | score[3][2] |
score[0][0] = 100 ; // 배열 score [0][0]에 (1행1열) 100 저장
2차원 배열 초기화
int[][] arr = { {1,2,3,}, {4,5,6} } ; // new int[][] 생략
보통은 알아보기 쉽게 아래와 같이 작성한다고 함
int[][] score = {
{100, 100, 100},
{ 20, 20, 20},
{ 30, 30, 30},
{ 40, 40, 40}
};
int[][] arr = new int[5][3];
행은 arr.length; 열은 arr[i].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
|
public class Ex5_8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] score = {
{100, 100, 100},
{20, 20, 20},
{30, 30, 30},
{40, 40, 40}
};
int sum = 0;
for(int i= 0; i<score.length; i++) { // score.length는 4
for(int j= 0; j<score[i].length; j++) { // score[0].length 는 3
System.out.printf("score[%d][%d]=%d%n", i , j ,score[i][j]);
sum += score[i][j];
}
}
System.out.println("sum="+sum);
}
}
|
cs |
출력
score[0][0]=100
score[0][1]=100
score[0][2]=100
score[1][0]=20
score[1][1]=20
score[1][2]=20
score[2][0]=30
score[2][1]=30
score[2][2]=30
score[3][0]=40
score[3][1]=40
score[3][2]=40
sum=570
Arrays클래스로 배열 다루기
- 배열 출력 ( toString(), deepToString() )
int[] arr = {0, 1, 2, 3, 4 };
int[][] arr2D = { {11, 12}, {21, 22} };
System.out.println(Arrays.toString(arr)); //[0, 1, 2, 3, 4] 출력
System.out.println(Arrays.deepToString(arr2D)); //[[11,12],[21,22]]
toString () : 배열을 문자열로 바꿔줌
deepToString() : 2차원 또는 다차원 배열 사용
- 배열 비교 ( equals(), deepEquals() )
String[][] str2D = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2 = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
System.out.println(Arrays.equals(str2D,str2D2); //false
System.out.println(Arrays.deepEquals(str2D, str2D2); // true 2차원 배열이기 때문에 deepEquals 사용
- 배열 복사 ( copyOf() , copyOfRange() )
int[] arr = { 0, 1, 2, 3, 4, };
int[] arr2 = Arrays.copyOf(arr, arr.length); //arr2 = [0,1,2,3,4]
int[] arr3 = Arrays.copyOf(arr, 3); //arr3 = [0,1,2]
int[] arr4 = Arrays.copyOf(arr, 7); //arr4 = [0,1,2,3,4,0,0]
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //arr5= [2, 3]
int[] arr6= Arrays.copyOfRange(arr,0,7); //arr6= [0,1,2,3,4,0,0]
- 배열 정렬 ( sort() )
int[] arr = {3,2,0,1,4};
Arrays.sort(arr) ; //배열 arr 정렬
System.out.println(Arrays.sort(arr)); //[0,1,2,3,4,]
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
|
import java.util.Arrays;
public class Ex5_1_tmp {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {4,2,3,5};
int[][] arr2D = { {11,12}, {21,22} };
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));
String[][] str2D = {{"aaa","bbb"}, {"AAA","BBB"}};
String[][] str2D2 = {{"aaa","bbb"}, {"AAA","BBB"}};
System.out.println(str2D==str2D2); //참조변수 값 비교
System.out.println(Arrays.deepEquals(str2D, str2D2));
int[] arr2 = Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.toString(arr2));
Arrays.sort(arr);//배열 arr을 오름차순으로 정렬
System.out.println(Arrays.toString(arr));
}
}
|
cs |
출력
[4, 2, 3, 5]
[[11, 12], [21, 22]]
false
true
[4, 2, 3, 5]
[2, 3, 4, 5]
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 객체의 생성 / 객체의 사용 / 객체 배열 ) (0) | 2020.07.06 |
---|---|
자바의 정석 기초 ( 객체지향언어 / 클래스 / 객체 / 인스턴스 ) (0) | 2020.07.01 |
자바의 정석 기초 ( String 배열 / String 클래스 주요 메서드 / 커맨드라인 입력 받기 / Eclipse 파일 위치 확인 ) (0) | 2020.06.30 |
자바의 정석 기초 (배열의 활용 / 총점 / 평균 / 최대값 / 최소값 / 숫자 섞기 / 로또번호 생성 ) (0) | 2020.06.29 |
자바의 정석 기초 ( 배열 / 배열의 선언 / 배열 인덱스 / 배열의 길이 / 배열 초기화 / 배열의 출력 ) (0) | 2020.06.25 |
댓글