본문 바로가기
학교/2-2학기(Java)

[4주차] 9/23(월) 강의내용

by C0MPAS 2024. 9. 23.

1. 배열

-> 배열 선언 및 생성

1) 배열에 대한 레퍼런스 변수 선언

2) 배열 생성 - 배열의 저장 공간 할당

 

-> 레퍼런스 치환과 배열 공유

int intArray[] = new int[5];
int myArray[] = intArray; // 레퍼런스 치환. myArray는 intArray와 동일한 배열 참조

 

-> 배열의 크기, length 필드

1) 배열이 생성되면 객체가 생성된다

2) 이 객체에는 배열의 저장 공간과 함께 배열의 크기 값을 가진 length 필드가 존재한다

int intArray[];
intArray = new int[5];

int size = intArray.length; // size는 5

 

-> 배열과 for - each 문

public class ForeachEx {
	enum Week { 월, 화, 수, 목, 금, 토, 일}

	public static void main(String[] args) {
		int [] n = {1,2,3,4,5};
		String names[] = {"사과", "배", "바나나", "체리", "딸기", "포도"};

		int sum = 0;
		for(int k : n) {
			System.out.print(k + " ");
			sum += k;
		}
		System.out.println("합은 " + sum);

		for(String s : names) {
			System.out.print(s + " ");
		}
		System.out.println();

		for(Week day : Week.values())
		{
			System.out.print(day + "요일 ");
		}
		System.out.println();
	}

}

 

2. 다차원 배열

-> 2차원 배열

public class ScoreAverage {

	public static void main(String[] args) {
		double score[][] = {
				{3.3, 3.4},
				{3.5, 3.6},
				{3.7, 4.0},
				{4.1, 4.2}
		};

		double sum = 0;
		for(int year=0; year<score.length; year++) {
			for(int term=0; term<score[0].length; term++) {
				sum += score[year][term];
			}
		}

		int n = score.length;
		int m = score[0].length;
		System.out.println("4학년 전체 평점 평균은 " + sum/(n*m));
	}

}

 

 

-> 비정방형 배열

public class SkewedArray {

	public static void main(String[] args) {
		int intArray[][] = new int[4][];
		intArray[0] = new int[3];
		intArray[1] = new int[2];
		intArray[2] = new int[3];
		intArray[3] = new int[2];

		for(int i=0; i<intArray.length; i++) {
			for(int j=0; j<intArray[i].length; j++) {
				intArray[i][j] = (i+1)*10 + j;
			}
		}

		for(int i=0; i<intArray.length; i++) {
			for(int j=0; j<intArray[i].length; j++) {
				System.out.print(intArray[i][j] + " ");
			}
			System.out.println();
		}
	}

}

 

-> 정방형 배열과 비정방형 배열

어떤 메소드가 배열을 매개변수로 받을 때,

배열이 정방형인지 비정방형인지는 표시되지 않기 때문에

항상 length 필드를 사용하여 각 행의 열의 개수를 파악하여야 한다.


 

3. 실습문제 4번

-> 풀이완료

public class Practice {

	public static void main(String[] args) {
		int n[][] = {
				{1,2,3},
				{1,2},
				{1},
				{1,2,3},
				{1,2,3,4}
		};

		for(int i=0; i<n.length; i++) {
			for(int j=0; j<n[i].length; j++) {
				System.out.print(n[i][j] + " ");
			}
			System.out.println();
		}
	}

}

 

4. 실습문제 13번

<<<풀이 진행중>>>

import java.util.Scanner;

public class Practice_13 {

	public static void main(String[] args) {
		String course [] = {"C", "C++", "Python", "Java", "HTMLS"};
		String grade [] = {"A", "B+", "B", "A+", "D"};

		Scanner sc = new Scanner(System.in);


		System.out.print("과목>>");
		while(true ){
			String courseName = sc.nextLine();

			System.out.print(courseName + " 학점은 " + grade);
			System.out.println();

			if(courseName.equals("그만")) {
				break;
			}
		}
	}

}

5. 메소드에서의 배열 리턴

-> new로 할당받은 배열 메모리는 사라지지 않는다

-> 지역 변수인 temp만 사라진다


출처: 명품 JAVA Programming(개정 5판), 생능출판사

'학교 > 2-2학기(Java)' 카테고리의 다른 글

[5주차] 9/30(월) 강의내용  (0) 2024.09.30
[4주차] 9/25(수) 강의내용  (1) 2024.09.25
[2주차] 9/11 강의내용  (0) 2024.09.11
[2주차] 9/9(월) 강의내용  (0) 2024.09.09
[1주차] 9/4(수) 강의내용  (1) 2024.09.08

댓글