프로그래밍/JAVA

35. 2차원 배열 생성 - 고정형과 가변형 비교

설매향 2025. 4. 23. 16:10
반응형

이번 글에서는 new 키워드를 사용하여 2차원 배열을 생성하는 방법을 익히고,
고정형 2차원 배열과 가변형 2차원 배열의 차이를 비교합니다.
또한 수학과 영어 점수를 배열로 관리하며, 전체 평균을 계산해보는 예제를 작성합니다.


📌 예제 코드

public class MultidimensionalArrayByNewExample {
	public static void main(String[] args) {
		int[][] math = new int[2][3];
		for (int i = 0; i < math.length; i++)
			for (int j = 0; j < math[i].length; j++)
				System.out.println("math[" + i + "][" + j + "] : " + math[i][j]);

		math[0][0] = 80; math[0][1] = 83; math[0][2] = 85;
		math[1][0] = 86; math[1][1] = 90; math[1][2] = 92;

		int stu = 0, sum = 0;
		for (int i = 0; i < math.length; i++) {
			stu += math[i].length;
			for (int j = 0; j < math[i].length; j++)
				sum += math[i][j];
		}
		System.out.println("전체 학생의 수학 평균 점수 : " + (double) sum / stu + "\n");

		int[][] eng = new int[2][];
		eng[0] = new int[2];
		eng[1] = new int[3];

		for (int i = 0; i < eng.length; i++)
			for (int j = 0; j < eng[i].length; j++)
				System.out.println("eng[" + i + "][" + j + "] : " + eng[i][j]);

		eng[0][0] = 90; eng[0][1] = 91;
		eng[1][0] = 92; eng[1][1] = 93; eng[1][2] = 94;

		stu = sum = 0;
		for (int i = 0; i < eng.length; i++) {
			stu += eng[i].length;
			for (int j = 0; j < eng[i].length; j++)
				sum += eng[i][j];
		}
		System.out.println("전체 학생의 영어 평균 점수 : " + (double) sum / stu + "\n");	
	}
}

💬 코드 설명

🟢 수학(math) 배열 – 고정형

  • int[][] math = new int[2][3];
    → 2행 3열의 고정형 2차원 배열 생성
  • 모든 요소는 초기값 0으로 채워짐
  • 각 인덱스에 점수를 수동 입력한 후 평균 계산

🔵 영어(eng) 배열 – 가변형

  • int[][] eng = new int[2][];
    → 2행만 생성한 뒤, 각 행에 다른 열 길이를 개별 설정
    • eng[0] = new int[2]; → 2열
    • eng[1] = new int[3]; → 3열
  • 가변 구조이므로 행마다 학생 수가 달라도 가능

💻 실행 결과 (요약)

math[0][0] : 0
math[0][1] : 0
math[0][2] : 0
...
전체 학생의 수학 평균 점수 : 84.33333333333333

eng[0][0] : 0
eng[0][1] : 0
...
전체 학생의 영어 평균 점수 : 92.0

📌 간단 정리

타입 설명 예시
고정형 배열 행과 열이 모두 고정됨 new int[2][3]
가변형 배열 행 개수는 고정, 각 행의 열은 나중에 지정 new int[2][] → arr[0] = new int[2]

💡 포인트 정리

  • new int[행][열] → 고정형 2차원 배열
  • new int[행][] → 가변형 2차원 배열
  • 배열의 길이는 .length로 확인 (각 행도 .length 사용 가능)
  • 평균 계산 시 학생 수(stu) 누적 후 (double) sum / stu로 계산
  • 초기값은 기본형: 0, 참조형: null