배열

치로·2024년 7월 17일

배열

1. 배열이란?

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

2. 배열을 만드는 방법

  • 배열의 선언
    데이터형 [ ] 배열 이름 ;
  • 배열의 생성 : 변수를 저장할 수 있는 사물함을 생성
    배열 이름 = new 데이터형 [크기];
  • 3개의 int형 변수를 저장할 수 있는 배열 생성
    int[] grade;
    grade = new int[3];
  • 배열의 선언과 크기 지정에 대한 일괄 지정
    데이터형[] 배열 이름 = new 데이터형[크기];
    int[] grade = new int[3];
  • 배열의 모양
    -> 생성된 배열은 사물함과 같이 각각의 칸에 값들이 저장되고, 각각의 칸은 0부터 일련 번호가 지정 (일련 번호 = 배열의 인덱스)

3. 배열에 값 지정 하기

  • 배열은 값을 저장할 수 있는 공간일 뿐, 그 자체가 값은 아님
  • 값이 대입되지 않은 경우, 숫자는 0, boolean false가 자동으로 대입
  • 배열 안에 값을 저장하기 위해서는 인덱스 번호를 사용해서 각각의 칸에 직접 값을 대입해야 함.
    배열 이름[인덱스] = 값;

4. 둘리의 점수를 배열로 표현

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

5. 배열의 크기 설정과 값 할당에 대한 일괄 처리 ///중요X

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

6. 배열값 사용하기

  • 배열 안에 저장되어 있는 값들을 사용하여 연산이나 출력 등의 처리를 위해서는 배열에 부여된 인덱스 값을 통해서 데이터에 접근
grade[0]; /// grade 안에 인덱스 0번째 꺼낼거야
grade[1];
System.out.println(grade[2]);

7. 배열과 반복문

  • 배열의 특성
    : 0 ~ (배열의 크기 -1) 만큼의 인덱스 값을 순차적으로 갖는다.
  • 특성을 활용한 배열 데이터 처리
    : 일정 범위를 갖고 순차적으로 증가하는 인덱스 값의 특성을 활용하면 반복문 안에서 배열의 값을 할당하거나, 할당된 값을 읽어들이는 처리가 가능
int[] grade = new int[]{100, 100, 90};
for(int i=0; i<3; i++) {
	System.out.println(grade[i]);
}

8. 배열의 길이

  • 배열의 거리를 얻기 위해서는 "배열 이름.length" 형식으로 접근
  • grade라는 배열을 생성한 경우 배열의 길
int size = grade.length;

int[] grade = new int[]{100, 100, 90};
for(int i=0; i<grade.length; i++) {
	System.out.println(grade[i]);
}

9. 배열의 종류

  • 1차 배열
    : 앞에서 살펴본 배열처럼 한 줄만 존재하는 사물함 같이 구성된 배열
    : 행에 대한 개념이 없고, 열에 대한 개념만 존재하기 때문에 "배열 이름.length"는 몇 칸인지를 알아보는 기능
  • 2차 배열
    : 1차 배열의 각 칸에 새로운 배열을 넣는 형태
    : 1차 배열의 각 칸은 행이 되고, 각각의 칸에 개별적인 배열이 "열"의 개념이 되어 "행렬"을 구성
  • 다차원 배열
    : 배열의 각 칸에 지속적으로 다른 형태의 배열을 포함시키는 형태로서 2차, 3차, n차까지 무제한 확장 가능
  • 실무에서는 2차원 배열을 초과하는 형태는 사용하지 않음

10. 이차원 배열

  • 이차원 배열의 선언
    데이터형[][] 배열 이름;
  • 2차원 배열의 크기 할당
    배열 이름 = new 데이터형[행][열];
  • 2차원 배열의 선언과 할당의 일괄 처리
    데이터형[][] 배열이름 = new 데이터형[행][열]
  • 2차원 배열의 선언, 크기 할당, 대입에 대한 일괄 처리
데이터형[][] 배열 이름 = new 데이터형[][] {
	{1행 0열의 값, 1행 1열의값, ... },
	{2행 0열의 값, 2행 1열의값, ... },
	...,
	{N행 0열의 값, N행 1열의값, ... }
};

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

  • 행,열에 대한 인덱스를 통하여 값을 대입
배열 이름[행][열] = 값;

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

12. 2차원 배열의 길이//어려움

  • 2차원 배열의 길이는 행에 대한 측면과 열에 대한 측면을 나누어서 생각
  • 행의 길이
    : int rows = grade.length;
  • 열의 길이
    : int cols = grade[행].length;

연습 코드

package array;

public class Main01 {

	public static void main(String[] args) {
		// 배열의 생성 방법
		// 배열의 선언과 크기 지정 및 값의 할당에 대한 개별 처리
		int[] dooly;
		dooly = new int[3];
		dooly[0] = 75;
		dooly[1] = 82;
		dooly[2] = 91;
		
		// 배열의 선언과 크기 지정의 일괄 처리
		int[] doune = new int[3];
		doune[0] = 88;
		doune[1] = 64;
		doune[2] = 50;
		
		// 배열 생성의 일괄 처리
		int[] ddochy = new int[] {100, 100, 90};
		
		// 배열의 활용 방법
		int sum1 = 0, sum2 = 0, sum3 = 0;
		// sum1 = 둘리 성적 총합
		for (int i=0; i<dooly.length; i++) {
			sum1 += dooly[i];
		}
		System.out.println("둘리의 성적 총합 : " + sum1);
		// sum2 = 도우너 성적 총합
		for (int i=0; i<doune.length; i++) {
			sum2 += doune[i];
		}
		System.out.println("도우너의 성적 총합 : " + sum2);
		// sum3 = 또치 성적 총합
		for (int i=0; i<ddochy.length; i++) {
			sum3 += ddochy[i];
		}
		System.out.println("또치의 성적 총합 : " + sum3);
		
		//각각의 평균 구하기
		System.out.println(sum1 / dooly.length);
		System.out.println(sum2 / doune.length);
		System.out.println(sum3 / ddochy.length);
		
	}

}
package array;

public class Main02 {

	public static void main(String[] args) {
		// 성적표에 대한 2차 배열 생성
		int[][] grade = new int[3][3];
		
		//둘리의 과목 별 점수
		grade[0][0] = 75;
		grade[0][1] = 82;
		grade[0][2] = 91;
		
		//도우너의 과목 별 점수
		grade[1][0] = 88;
		grade[1][1] = 64;
		grade[1][2] = 50;
		
		//또치 과목 별 점수
		grade[2][0] = 100;
		grade[2][1] = 100;
		grade[2][2] = 90;
		
		// 2차 배열을 탐색하여 총점과 평균 점수 구하기
		for(int i=0; i<grade.length; i++) { //행을 탐색하는 반복문
			// 반복문 안에서 선언된 변수는 매 실행시마다 새로 생성
			int sum = 0;
			int avg = 0;
			
			for (int j=0; j<grade[i].length; j++)
			// i번째 위치의 j번째 각 과목별 점수에 대한 누적 처리
				sum += grade[i][j];
			// i번째 학생의 과목수는 grade배열의 i번째에 대한 길이
			avg = sum / grade[i].length;
			
			System.out.println("총점 = " + sum + "평균 : " + avg);
		}
		
		
		}
}

0개의 댓글