[JAVA] 2차원 배열 / 향상 for문

Gabriela·2023년 7월 17일
0

JAVA

목록 보기
5/24

2차원 배열

  • 1차원 배열2개 이상 모인 자료 구조이다.
  • 행과 열의 집합인 테이블 구조로 이해하면 쉽다.
  • 사용하는 인덱스가 2개이다.
  • 2차원 배열의 순회에는 2개의 for문이 필요하다.
  • 모든 열의 갯수가 동일할 필요는 없다.
    (C계열 언어는 행과 열의 갯수가 동일해야한다.)

2차원 배열의 선언 & 생성

  • 2차원 배열의 선언
int[][] a;
  • 2차원 배열의 생성

new int[1차원 배열의 갯수][1차원 배열의 길이]

a = new int[3][2];
// 테이블 구조로 이해 : 3행 2열
// 실제 구조로 이해   : 길이가 2인 1차원 배열이 3개 
  • 2차원 배열의 선언 & 생성
int[][] a = new int[3][2];

2차원 배열의 2중 for문

    // 2차원 배열의 초기화
    int[][] a = {
        {10, 20},
        {30, 40},
        {50, 60}
    };
   
    // 2중 for문
    for(int i = 0; i < 3; i++) {
      for(int j = 0; j < 2; j++) {
        System.out.print(String.format("%4d", a[i][j]));
      }
      System.out.println();
    }
  • length를 이용한 2중 for문
    // 2차원 배열의 2중 for문 최종 버전
    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();
    }

2차원 배열의 구조 그림으로 이해하기


향상 for문 (advanced for)

  • 인덱스를 명시할 필요가 없을 때 단순 조회용도로 사용하기 용이하다.
  • 배열값을 바꾸지 않는 단순 참조의 경우에는 향상 for문을 사용해도 괜찮지만 그렇지 않은 경우 주의해서 사용해야 한다.
  • 향상 for문은 배열요소를 순차적으로 자동 정렬 하되, 배열을 복사해와서 사용하는 것이다.
  • 그래서 배열을 직접 수정하는 것은 안 된다.

작성 방법

  • for(배열요소를저장할변수 : 배열명)
    › (배열요소 : 배열에 저장된 각각의 변수)

활용 예제

  • 1차원 배열의 advanced for문
// 1차원 배열의 초기화
int[] a = {10, 20, 30};
   
for(int number : a) {
   // 배열 a의 모든 요소를 순차적으로 number로 넘김
   System.out.println(number);
}
  • 2차원 배열의 advanced for문
// 2차원 배열의 초기화
int[][] a = {
    {10, 20},
    {30, 40},
    {50, 60}
};
   
// advanced-for
// for(배열요소 : 배열) {
// }
   
for(int[] b : a) {    // 배열요소 -> int의 배열타입
   for(int number : b) {
     System.out.print(String.format("%4d", number));
   }
   System.out.println();
}

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

: 배열요소의 값이 변하는 경우


  • 초기화
// 1차원 배열 초기화
int[] a = {10, 20, 30};
  • 불가능 예시
 모든 배열요소를 1씩 증가시키기 - 1 : advanced-for(불가능)
 for(int number : a) {
   number++;
 }
  • 가능한 예시
// 모든 배열요소를 1씩 증가시키기 -2 : 일반 for문 (가능)
 for(int i = 0; i < a.length; i++) {
   a[i]++;
 }

  • 배열요소 확인
System.out.println(Arrays.toString(a)); // [11, 21, 31]  
//Arrays. : 배열의 유틸을 저장하는 클래스 이름

🐱우움..


profile
개발이 세상에서 제일 재밌어요

2개의 댓글

comment-user-thumbnail
2023년 7월 26일

우움이래 ㅋㅋㅋㅋ `(>﹏<)′ 이거같아서 귀엽드아ㅏㅏㅏㅏ

1개의 답글

관련 채용 정보