JAVA 배열

박종휘·2022년 8월 3일
0

JAVA - 국비

목록 보기
8/29
post-thumbnail

1. 배열

✔ 배열 사용 전 (배열을 모를 때)

  • 프로그램에서 처리하는 값들이 많아질수록, 선언해야 하는 변수의 수가 증가하게 되어 프로그램의 소스가 더 난해해진다.

    		int dooly_kor = 75;
        	int dooly_eng = 82;
          	int dooly_math = 91;
            System.out.println(
            		(dooly_kor+dooly_eng+dooly_math)/3
            );
            
            int donner_kor = 88;
        	int donner_eng = 64;
          	int donner_math = 50;
            System.out.println(
            		(donner_kor+donner_eng+donner_math)/3
            );
            
            int ddochi_kor = 100;
        	int ddochi_eng = 100;
          	int ddochi_math = 90;
            System.out.println(
            		(ddochi_kor+ddochi_eng+ddochi_math)/3
            );

▶ 이러한 데이터들을 효율적으로 관리하기 위해 배열을 배우고 사용한다.

1-1. 배열이란?

  • 변수를 그룹으로 묶은 형태의 한 종류로서, 사물함 같은 형태를 갖고 있다.
  • 하나의 배열 안에는 같은 종류(데이터 형)의 값들만 저장될 수 있다.

1-2. 배열을 만드는 방법

  • 배열의 선언

    		데이터형[] 배열이름;
  • 배열의 생성 : 변수를 저장할 수 있는 사물함 생성

    		배열이름 = new 데이터형[크기]
  • 배열 생성의 예 : 3개의 int형 변수를 저장할 수 있는 배열 생성

    		int[] grade;		// 여러개의 int형 변수를 저장할 수 있는 배열의 선언
      		grade = new int[3];	// 배열의 칸을 3칸으로 할당

=> 0, 1, 2 ... : '인덱스'라고 한다. (배열은 0부터 시작한다.)

  • 배열의 모양
    → 생성된 배열은 사물함과 같이 각각의 칸에 값들이 저장되고, 각각의 칸은 0부터 일련번호가 지정된다. (일련번호 = 배열의 인덱스)

  • 배열의 선언과 크기 지정에 대한 일괄처리

    		데이터형[] 배열이름 = new 데이터형[크기];
      		int[] grade = new int[3];

1-3. 배열의 값을 저장하기

  • 배열은 값을 저장할 수 있는 공간일 뿐, 그 자체가 값은 아니다.

  • 값이 대입되지 않은 경우, 숫자형은 0, boolean형은 false가 자동으로 대입된다.

  • 배열 안에 값을 저장하기 위해서는 인덱스 번호를 사용하여 각각의 칸에 직접 값을 대입해야한다.

    		배열이름[인덱스] = 값;
  • 둘리의 점수를 배열로 표현한 예

    		int[] grade = new int[3];
      		grade[0] = 75;
      		grade[1] = 82;
      		grade[2] = 91;

1-4. 배열의 크기 설정과 값 할당에 대한 일괄처리

  • 배열의 크기를 지정하면서 괄호 "{...}"안에 배열에 포함될 각 항목들을 콤마(,)로 나열하면, 배열의 생성과 값의 할당을 일괄처리할 수 있다. 이 때는 배열의 크기를 별도로 지정하지 않으며, "new 데이터형[ ]" 부분은 생략 가능하다.

    		데이터형[] 배열이름 = new 데이터형[]{값1, 값2, 값3, ..., 값n}
      			또는
      		데이터형[] 배열이름 = {값1, 값2, 값3, ..., 값n}

1-5. 배열값 사용하기

  • 배열 안에 저장되어 있는 값들을 사용하여 연산이나 출력 등의 처리를 위해서는 배열에 부여된 인덱스 값을 통해서 데이터에 접근해야 한다.

    		grade[0];
      		System.out.println(grade[0]);	// 75
      		System.out.println(grade[2]);	// 91
      		System.out.println(grade[3]);	// Err

1-6. 배열과 반복문

  • 배열의 특성
    → 0 ~ (배열의 크기 - 1) 만큼의 인덱스 값을 순차적으로 갖는다.

  • 특성을 활용한 배열 데이터의 처리
    → 일정 범위를 갖고 순차적으로 증가하는 인덱스 값의 특성을 활용하는 반복문 안에서 배열의 값을 할당하거나, 할당된 값을 읽어들이는 처리가 가능하다.

    	// 배열의 인덱스는 0부터 전체 길이 3보다 작은 2까지이다.
        int[] grade = new int[]{100, 100, 90};
        
        for(int i=0; i<3; i++){
        		// i번째 배열 값에 대한 출력 처리
                System.out.println(grade[i]);
        }

1-7. 배열의 크기 (길이)

  • 배열의 길이를 얻기 위해서는 "배열이름.length" 형식으로 접근한다.

  • grade라는 배열을 생성한 경우 배열의 길이는

    		int size = grade.length;
  • 배열의 길이 값은 주로 반복문의 조건식에서 반복의 범위를 지정하기 위하여 사용된다.

    		int[] grade = new int[]{100, 100, 90};
      
      for(int i = 0; i < grade.length; i++){
      		// i번째 배열값에 대한 출력 처리
              System.out.println(grade[i]);
      }

1-8. 배열의 종류

  • 1차 배열
    → 앞에서 살펴본 배열처럼 한 줄만 존재하는 사물함 같이 구성된 배열
    → 행에 대한 개념이 없고, 열에 대한 개념만 존재하기 때문에 "배열이름.length"는 몇 칸인지를 알아보는 기능이 된다.

  • 2차 배열
    → 1차 배열의 각 칸에 새로운 배열을 넣는 형태
    → 1차 배열의 각 칸은 "행"이 되고, 각각의 칸에 추가된 개별적인 배열이 "열"의 개념이 되어 "행렬"을 구성하세 된다.

1-9. 2차원 배열의 생성 방법

  • 데이터 타입의 이름 뒤에 대괄호 "[ ]"를 행과 열에 대하여 각각 지정한다. (선언)

    		데이터형[][] 배열이름;
  • 2차원 배열의 크기 할당
    → 행과 열에 대한 크기를 명시한다.

    	배열이름 = new 데이터형[행][열];

    → 2차원 배열의 선언과 할당의 일괄처리

    	데이터형[][] 배열이름 = new 데이터형[행][열];

2. 2차 배열

  • 2차원 배열의 선언, 크기 할당, 값의 대입에 대한 일괄처리
    → 2차원 배열의 경우 블록 괄호 "{}"를 2중으로 겹쳐서 2차원 배열을 표현한다.
    → 행과 열의 구분에는 콤마(,)가 사용된다.
    → 컴파일러가 블록괄호 "{}"의 요소를 파악하면 행, 열의 크기가 산출될 수 있으므로 배열의 크기 설정을 위한 [ ][ ]에는 배열의 크기를 명시하지 않는다.

    	데이터형[][] 배열이름 = new 데이터형[][]{
        		{0행0열의 값, 0행1열의 값, ... ,0행n열의 값},
    			{1행0열의 값, 1행1열의 값, ... ,1행n열의 값},
    			...
    			{n행0열의 값, n행1열의 값, ... ,n행n열의 값}
        };

2-1. 2차원 배열에 대한 값의 대입 방법

  • 행, 열에 대한 인덱스를 통하여 값을 대입한다.

    		배열이름[행][열] = 값;
      
      		int[][] grade = new int[3][3];
      		grade[0][0] = 75;
      		grade[0][1] = 82;
      		grade[0][2] = 91;
      
      		...
  • 일괄 지정하는 경우

    		int[][] grade = new int[][]{
      				{75, 82, 91},
              		{88, 64, 50},
              		{100, 100, 90}
      };

2-2. 2차원 배열의 길이

  • 2차원 배열의 길이는 행에 대한 측면과 열에 대한 측면을 나누어서 생각해야한다.

  • 행의 길이
    → 1차 배열의 길이는 2차 배열에서는 행의 크기로 조회가 된다.

    		int rows = grade.length;
  • 열의 길이
    → 열의 길이는 각 행에 대하여 개별적으로 조회해야 한다.

    		int cols = grade[행].length;
profile
개린이의 개발 고수되기 작전!

0개의 댓글