ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Array 2
    Java-diary/REFERENCE TYPE 2020. 3. 27. 21:12
    2차원 배열 정의 int[][] m =new int[행][열];
    2차원 배열의 저장 원리
    2차원 배열에 for문 사용하기 int[][] m =new int[행][열];
    for(조건식 <m.length){for(조건식 <m[0].length){}}
     
     
     
     
     
     
     
    ------------------------------------------------------------------------------------------------------
    2차원 배열
    행렬처럼 배열을 행과 열로 엮어 표현한다.
    int[][] m =new int[행][열]; <-행과 열은 크기를 말한다. m[행][열]은 만들어진 방의 번호이다. 둘이 안같다 주의.
     
     
     
    ex)
    1 2 3
    1 5 6 7 m[1][1] = 5
    2 8 9 10 m[1][3] = 7
    3 111213
    --------------------------------------------------------------------------------------------------------
    2차원 배열의 저장 원리
     
    stack
    참조값만 저장
     
    #100 <-메모리 상의 주소값
    안에
    #110 #120 #130
    □ □ □
     
    ↑ ↑ ↑
     
     
    m[0] m[1] m[2] <-행 표시
     
     
    ↓ ↓ ↓
     
    #110 #120 #130
     
    ----- ----- -----
    |1|2| |1|2| |1|2| <-열 표시
    ----- ----- -----
     
     
    #110의 1번 index에는 m[0][0]이 들어있다
    #110의 2번 index에는 m[0][1]이 들어있다.
     
    #120의 1번 index에는 m[1][0]이 들어있다.
    #120의 2번 index에는 m[1][1]이 들어있다.
     
    #130의 1번 index에는 m[2][0]이 들어있다.
    #130의 2번 index에는 m[2][1]이 들어있다.
     
    *reference type의 크기
    전부 32bit이다. 왜냐하면 참조값만 가지기 때문이다.
    때문에 m안의 m[0] m[1] m[2] 도 전부 32bit를 가지고 있다.
    -------------------------------------------------------------------------------------------------------------
    2차원 배열에 for문 사용하기
    int[][] m =new int[행][열];
    for(조건식 <m.length){for(조건식 <m[i].length){}}
    ex)
    만약 각 배열을 이루는 index가 순서대로 123456을 출력하게 하고 싶을경우
    int[][] m = new int[3][2];
    int counter= 0; <-counter 변수를 만들고
    for (int i = 0; i < m.length; i++) {
    for (int j = 0; j < m[i].length; j++) {
    counter++; <-for문이 변할때마다 1씩증가 하게 해서
    m[i][j]= counter; <2차원 배열과 변수를 조합시켜라
    System.out.println(m[i][j]);
    }
     
    }
    ---------------------------------------------------------------------------------------------------------------
    2차원 배열의 초기화
     
    1차원 배열의 초기화처럼
    int[][] m { { , ,}, <-3행 3열이된다.
    { , ,},
    { , ,} }
     
     
    ex)
    package day05;
     
    //2차원 배열의 초기화
    public class ArrayEx6 {
    public static void main(String[] args) {
     
    int[][] m = { { 0, 0, 0 }, //<-4행 3열
    { 0, 1, 2 },
    { 0, 2, 4 },
    { 0, 3, 6 }
    };
     
    for (int i = 0; i < m.length; i++) {
    for (int j = 0; j < m[i].length; j++) {
    System.out.print(m[i][j]);
     
    }
    System.out.println();
    }
     
     
    }
     
    }
     
    *for문에서 두번째 for문의 m[0].length를 m[i].length로 바꿔야 하는이유
    각 행마다 열의 length가 달라지게 되면 [0]이 되어버리면 맞지 않는다 .
    때문에 유연하게 대응할수 있도록 하는 m[i].lenghth로 해주어야 한다.
    public class ArrayEx6 {
    public static void main(String[] args) {
     
    int[][] m = { { 0, 0, 0 },
    { 0, 1, 2 ,1,2,3},
    { 0, 2, 4 ,2},
    { 0, 3, 6 ,4,5,6,7,8}
    };
     
    for (int i = 0; i < m.length; i++) {
    for (int j = 0; j < m[i].length; j++) {
    System.out.print(m[i][j]);
     
    }
    System.out.println();
    }
     
     
    }
     
    }

    댓글

Designed by Tistory.