[230717] 2차원 배열/향상 for문 (DAY 14) - 구디아카데미후기 IT국비지원 민경태 강사님

MJ·2023년 7월 17일

수업 TIL🐣💚

목록 보기
15/68

2차원 배열

  • 1차원 배열이 2개 이상 모인 자료 구조
  • 행과 열의 집합인 테이블 구조로 이해하면 쉬움
  • 사용하는 인덱스가 2개
  • 2차원 배열의 순회에는 2개의 for문 필요

선언 & 생성 & 초기화

  • 선언 : int[][] a;
  • 생성 : a = new int[3][2];
    • 테이블 구조로 이해 : 3행 2열
    • 실제 구조로 이해 : 길이가 2인 1차원 배열이 3개
  • 선언 & 생성 : int[][] a = new int[3][2];
  • 초기화 : int[][] a = { { 10, 20 }, { 30, 40 }, { 50, 60 } };

출력

    for (int i = 0; i < a.length; i++) {
      for (int j = 0; j < a[i].length; j++) {
        System.out.print(String.format("%4d", a[i][j]));
      }
      System.out.println();
    }


a는 a[0],a[1],a[2] 즉 a배열의 시작점을 가리키고 a.length는 3
a[0], a[1], a[2]은 각각 1차원 배열인 a[i].length는 2
a.length는 행 개수
a[i].length는 열 개수


  public static void ex06() {
    // java에서 모든 열의 갯수는 동일할 필요 없음 (c계열은 같아야 함)
    int[][] a = { { 10 }, { 20, 30 }, { 40, 50, 60 } };
    for (int i = 0; i < a.length; i++) {
      for (int j = 0; j < a[i].length; j++) {
        System.out.print(String.format("%4d", a[i][j]));
      }
      System.out.println();
    }
  }


향상 FOR문(advanced-for)

1차원 배열

  • for(배열요소를 저장할 변수 : 배열명)
    int[] a = { 10, 20, 30 };
    for (int number : a) {
      System.out.println(number);
    } // 배열 a의 모든 요소를 순차적으로 number로 넘김 (인덱스를 적지 않음) 

2차원 배열

    int[][] a = { { 10, 20 }, { 30, 40 }, { 50, 60 } };

    for (int[] b : a) {
      for (int number : b) {
        System.out.print(String.format("%4d", number));
      }
      System.out.println();
    }

advanced-for 사용하지 못하는 대표적인 경우

  • 배열요소의 값이 변하는 경우
    int[] a = { 10, 20, 30 };

    // 모든 배열요소를 1씩 증가시키기 -1 : advanced-for(불가능)
    for (int number : a) {
      number++;
    }

    // 배열 요소 확인
    System.out.println(Arrays.toString(a)); // 11,21,31이 나와야 정상인데 10,20,30 그대로 
    // 향상 for문은 배열 요소를 복사해서 쓰는 것이기 때문. number의 값이 증가한거지 배열원본이 증가하지는 않음

    // 모든 배열요소를 1씩 증가시키기 -2 : 일반 for문 (가능)
    for (int i = 0; i < a.length; i++) {
      a[i]++;
    }
    System.out.println(Arrays.toString(a)); // 11,21,31이 나옴



🟢 구디아카데미후기 IT국비지원 민경태 강사님 수업 14일차! 🟢
오늘 수업도 유익했다! 그래도 배열까지는 즐길 수 있다..ㅎㅎ
그밖에 시험도 봤고 연습문제도 받았다. 문제를 많이 내주셔서 좋다 푸는게 나름 재밌어서...

0개의 댓글