본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 2차원 배열 / Arrays클래스 / equals() / toString() / copyOf() / copyOfRange() / sort() )

by ✲ 2020. 7. 1.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

 

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 = {
                {100100100},
                {202020},
                {303030},
                {404040}
                        };
        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]

반응형

댓글