JAVA - 참조타입

Luna·2022년 11월 29일
0

JAVA

목록 보기
5/32

참조 타입의 종류

  • 배열, 클래스 (String 포함), 열거 타입, 인터페이스

점수의 합과 평균 구하기

예제1

public class Practice {
	public static void main(String[] args) {
		int scores[];
		scores = new int[3]; // new - 메인 메모리에 자리가 생긴다. 4(int의 크기) * 3(배열의 길이) 바이트 크기가 된다.
		scores[0] = 83;
		scores[1] = 90;
		scores[2] = 87; 

		System.out.println("scores[0] : " + scores[0]); // 배열의 첫번째 데이터 출력
		System.out.println("scores[1] : " + scores[1]); // 배열의 두번째 데이터 출력
		System.out.println("scores[2] : " + scores[2]); // 배열의 세번째 데이터 출력
		System.out.println("scores 배열의 길이 : " + scores.length);

		// 배열 scores 안에 모든 데이터를 더하자. 합계 구하기. - 갯수가 정해져 있다.
		int sum = 0;
		for (int i = 0; i < 3; i++) {
			sum += scores[i];
		}
        System.out.println("합계 : " + sum);

		// 평균 구하기
		double avg = (double) sum / 3;
		System.out.println("평균 : " + avg);

	} // end of main()

} // end of class

예제 1의 코드는 배열과 값을 각각 생성하고 출력도 하나씩 각각 한다. 반복문도 배열의 길이를 먼저 구한 후 그 값을 반복문과 평균값에 대입한다.

예제 1.1 - 코드 간결화

public class Practice {
	public static void main(String[] args) {

		int[] scores = { 83, 90, 87 }; // 초기에 값을 모두 알고 있는 경우

		// 모든 값을 출력
		for (int i = 0; i < scores.length; i++) {
			System.out.println("scores["+i+"] : "+scores[i]);
		}

		// 합계 구하기
		int sum = 0;
		for (int i = 0; i < scores.length; i++) {
			sum += scores[i];
		}
        System.out.println("합계 : " + sum);

		// 평균 구하기
		double avg = (double) sum / scores.length;
		System.out.println("평균 : " + avg);
	} 
} 

예제 1.1 에선 훨씬 코드가 간결해졌다. 배열 선언과 값을 넣는걸 한 줄로 만들었다. 그리고 scorse.length를 이용해서 굳이 배열이 길이를 알아보는 출력문을 쓰지 않아도 된다. (배열의 길이가 궁금하지 않는 이상..) 그리고 for문을 이용해서 System.out.println("scores["+i+"] : "+scores[i]); 출력문이 세줄 이었던 것을 한 줄로 만들었다. 합계와 평균 구하는 코드에서도 scores.length를 사용했다.

예제 1.2 - 향상된 for문

public class Practice {
	public static void main(String[] args) {

		int[] scores = { 83, 90, 87 }; // 초기에 값을 모두 알고 있는 경우

		// 향상된 for문 (iterator for문)
		for (int score : scores) {
			System.out.println(score);
		}

		//합계 구하기
		int sum = 0;
		for (int score : scores) {
			sum += score;
        }
		System.out.println("합계 : " + sum);

		// 평균 구하기
		double avg = (double) sum / scores.length;
		System.out.println("평균 : " + avg);
	}
}

향상된 for문을 이용해서 더욱 간단하게 코드를 쓸 수 있다. 하지만 이렇게 쓰면 scores[2] : 87 이런 형식의 출력문을 만들 수 없는 것 같다. 만들 수 있는 방법이 있는지 생각 해 봐야 할 것 같다.


열거 타입

예제 1

import java.util.Calendar;

enum Week {
	MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

public class EnumWeekExample {

	public static void main(String[] args) {
		Week today = null;
		System.out.println(today);

		Calendar cal = Calendar.getInstance();
		// getInstance() 메서드인 경우 - new하고 주소를 넘겨주는 메서드
		
		// cal에서 요일 정보(7)를 가져온다. 1-일요일, 2-월요일 ... 7-토요일
		int week = cal.get(Calendar.DAY_OF_WEEK); // DAY_OF_WEEK - final 변수
		System.out.println(week);

		switch (week) {

		case 1:
			today = Week.SUNDAY; break;
		case 2:
			today = Week.MONDAY; break;
		case 3:
			today = Week.TUESDAY; break;
		case 4:
			today = Week.WEDNESDAY; break;
		case 5:
			today = Week.THURSDAY; break;
		case 6:
			today = Week.FRIDAY; break;
		case 7:
			today = Week.SATURDAY; break;
		}
		
		System.out.println("오늘 요일 : "+today);
		
		String [] weeks = {"요일","일요일","월요일","화요일","수요일","목요일","금요일","토요일"};
		// 0은 안쓰기 때문에 그냥 요일이라고 쓰거나 아님 비워두어도 됨.
		System.out.println("오늘의 요일은 " + weeks[week] +" 입니다.");
		// 현재 week는 3이기 때문에 화요일이 나옴. weeks[3]
		
		if(today == Week.TUESDAY) {
			System.out.println("화요일");
		} else {
			System.out.println("화요일 아님");
		}
	}
}

두 변수의 값을 바꾸기

  • 이 챕터에 나오는 내용은 아니지만 수업 중간에 갑자기 해보라고 하셔서(?) 만들게 됨
public class ChangeNumber {

	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		
		System.out.println("a="+a+", b="+b);
		
		// a와 b의 값을 바꾸는 처리 프로그램 작성	
		int tmp = a;
		a = b;
		b = tmp;

		System.out.println("a="+a+", b="+b);
	}
}

0개의 댓글