Daily coding

Java Basic : day 3 - 2차원 배열 본문

Language/Java_basic

Java Basic : day 3 - 2차원 배열

sunnnkim 2019. 11. 20. 19:23

이차원 배열


/*
  Array : 같은 자료형의 묶음 변수들
        관리 : index (0 ~ n-1)
       다른 자료형의 묶음 : class (Data Transfer Object(DTO), Value Object(VO)), structure(C언어)
  1차원 배열 할당
       int array[] = new int [5];
       int array[] = {1,2,3};
        - 선형구조 :  0-1-2-3-4-5

단점 : 
- 같은 자료형밖에 사용하지 못함
- 정적이다 (공간이 낭비되거나 또는 모자랄 수 있음)
   
    이차원 배열
    int arr[][] = new int[열의 인덱스][행의 인덱스];
   
    //행을 앞으로 뺄 수 있음
    new [행]int[열]
   
    int **pp; 

 : C언어에서의 포인터포인터와 2차원배열은 같은 개념
   
    * 이차원 배열 *
   
    int arr[2][3] = {
      { 1, 2, 3 },
      { 4, 5, 6 }
    };
    arr[1][2] = 5;
   
    C의 **사용하기 : arr[1][2] == *(*(pp+1)+2)
   
 */

int Array2[][];

Array2 = new int[3][]; //우선 열 만 3개 할당
//행을 직접 만듦
int data1[] = new int[5];
data1[0] = 1;
data1[1] = 2;
data1[2] = 3;
data1[3] = 4; 
data1[4] = 8; 

int data2[] = new int[4];
data2[0] = 5;
data2[1] = 6;
data2[2] = 7;
data2[3] = 8;

int data3[] = new int[4];
data3[0] = 9;
data3[1] = 10;
data3[2] = 11;
data3[3] = 12;

//2차원 배열의 행에 대입
Array2[0] = data1;
Array2[1] = data2;
Array2[2] = data3;

for (int i = 0; i < 3; i++) {
for (int j = 0; j < Array2[i].length; j++) {
           System.out.print(Array2[i][j]+ " ");
           }System.out.println();
}
//각 행의 데이터 수가 달라도 집어넣을 수는 있음


// 2번째 방법
int Array21[][] = new int[2][3];

Array21[0][0] = 10;
Array21[0][1] = 11;
Array21[0][2] = 12;

Array21[1][0] = 20;
Array21[1][1] = 21;
Array21[1][2] = 22;
      

// length는 열의 길이 기준 (맨 앞의 [])
// 안 쪽 for문의 범위는 이차원배열의 첫열의 첫행의 length로 지정 
for (int i = 0; i < Array21.length; i++) {
for (int j = 0; j < Array21[0].length; j++) {
            System.out.println(Array21[i][j]+ " ");
            }System.out.println();
}


//자바에서는 반드시 열 묶음 {} 을 적어줘야 오류가 생기지 않는다.
int Array22[][]= {
{  1,  2,  3,  4 }, //0 0~3
{ 11, 12, 13 ,14 }, //1 0~3
{ 21 ,22, 23, 24 }  //2 0~3
};


}
}