AR삽질러

이것이 자바다 - 5장 확인문제(참조타입) 본문

JAVA

이것이 자바다 - 5장 확인문제(참조타입)

아랑팡팡 2023. 2. 23. 17:09
728x90

1. 참조 타입에 대한 설명으로 틀린 것은 무엇입니까?

정답 : 4 참조타입은 null값으로 초기화할 수 없다.

 - 참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null(널)값을 가질 수 있다. null값도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변순ㄴ 스택 영역에 생성된다. 참조 타입 변수가 null값을 가지는지 확인하려면 다음과 같이 ==, != 연산을 수행하면 된다.

 

2. 자바에서 메모리 사용에 대한 설명으로 틀린 것은 무엇입니까?

정답 : 3 참조되지 않는 객체는 프로그램에서 직접 소멸 코드를 작성하는 것이 좋다.

- 힙 영역은 객체와 배열이 생성되는 영역이다. 힙 영역에 생성된 객체와 배열은 JVM스택영역에 변수나 다른 객체의 필드에서 참조한다. 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고 JVM은 쓰레기 수집기(Garabage Collector)를 실행시켜 쓰레기 객체를 힙 영역에서 자동으로 제거한다. 그렇기 때문에 개발자는 객체를 제거하기위해 별도의 코드를 작성할 필요가 없다.

 

3. String타입에 대한 설명으로 틀린 것은 무엇입니까?

정답 : 2 String타입의 문자열 비교는 == 를 사용해야한다.

 - 동일한 문자열 리터럴로 String 객체를 생성했을 경우 == 연산의 결과는 true가 나오지만 new 연산자로 String객체를 생성했을 경우 연산의 결과는 false가 나온다. == 연산자는 변수에 저장된 객체 번지가 동일한지를 검사하기 때문이다.

 

4. 배열을 생성하는 방법으로 틀린 것은 무엇입니까?

정답 : 2 int[] array; array = {1,2,3};

 - 변수는 한개의 데이터만 저장할 수 있다.

 - 변수 = new 타입[] {값0, 값1, 값2, 값3 ....}

 

5. 배열의 기본 초기값에 대한 설명으로 틀린 것은 무엇입니까?

정답 : 3 boolean타입 배열 항목의 기본 초기값은 true이다.

분류 데이터 타입 초기값
기본 타입(정수) byte[]
char[]
short[]
int[]
long[]
0
'\u0000'
0
0
0L
기본 타입(실수) float[]
double[]
0.0F
0.0
기본 타입(논리) boolean[] false
참조 타입 클래스[] null
인터페이스[] null

 

6. 배열의 길이에 대한 문제입니다. array.length의 값과 array[2].length의 값은 얼마입니까?

public class Exercise07 {
	public static void main(String[] args) {
		int[][] array = {
				{95, 86},
				{83, 92, 96},
				{78, 83, 93, 87, 88}
		};
		System.out.println("array.length : " + array.length);
		System.out.println("array[2].length : " + array[2].length);
	}
}

정답 : array.length : 3

          array[2].length : 5

 

7. 주어진 배열의 항목에서 최대값을 구해보세요(for문을 이용하세요).

public class Exercise07 {
	public static void main(String[] args) {
		int max = 0;
		int[] array = {1,5,3,8,2};
		// 작성위치
		
		
		System.out.println("max : " + max);
	}
}

정답 : 8

public class Exercise07 {
	public static void main(String[] args) {
		int max = 0;
		int[] array = {1,5,3,8,2};
		// 작성위치
		for(int i = 0; i < array.length; i++) {
			if(max < array[i]) {
				max = array[i];
			}
		}
		
		
		System.out.println("max : " + max);
	}
}

 

8. 주어진 배열의 전체 항목의 합과 평균값을 구해보세요(중첩for문을 이용하세요).

public class Exercise08 {
	public static void main(String[] args) {
		int[][] array = {
				{95, 86},
				{83, 92, 96},
				{78, 83, 93, 87, 88}
		};
		int sum = 0;
		double avg = 0.0;
		
		// 작성위치
		
		System.out.println("sum : " + sum);
		System.out.println("avg : " + avg);
	}
}

정답 : 합계 881 평균 88.1

public class Exercise08 {
	public static void main(String[] args) {
		int[][] array = {
				{95, 86},
				{83, 92, 96},
				{78, 83, 93, 87, 88}
		};
		int sum = 0;
		double avg = 0.0;
		
		// 작성위치
		int num = 0;
		for(int i = 0; i < array.length; i++) {
			for(int j = 0; j < array[i].length; j++) {
				sum += array[i][j];
				num++;
			}
		}
		avg = (double)sum/num;
		
		System.out.println("sum : " + sum);
		System.out.println("avg : " + avg);
	}
}

 

9. 다음은 키보드로부터 학생 수와 각 학생들의 점수를 입력받아서 최고 점수 및 평균점수를 구하는 프로그램입니다. 실행 결과를 보고 알맞게 작성해보세요.(참고로 16라인에서 Scanner의 nextInt()메소드는 콘솔에 입력된 숫자를 읽고 리턴합니다.)

public class Exercise09 {
	public static void main(String[] args) {
		boolean run = true;
		int studentNum = 0;
		int[] scores = null;
		Scanner scan = new Scanner(System.in);
		
		while(run) {
			System.out.println("------------------------------------------");
			System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
			System.out.println("------------------------------------------");
			System.out.println("선택> ");
			
			int selectNo = scan.nextInt();
			
			if(selectNo == 1) {
				// 작성위치
			}else if(selectNo == 2) {
				// 작성위치
			}else if(selectNo == 3) {
				// 작성위치
			}else if(selectNo == 4) {
				// 작성위치
			}else if(selectNo == 5) {
				run = false;
			}
		}
		System.out.println("프로그램 종료");
	}
}

정답

public class Exercise09 {
	public static void main(String[] args) {
		boolean run = true;
		int studentNum = 0;
		int[] scores = null;
		Scanner scan = new Scanner(System.in);
		
		while(run) {
			System.out.println("------------------------------------------");
			System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
			System.out.println("------------------------------------------");
			System.out.print("선택> ");
			
			int selectNo = scan.nextInt();
			
			if(selectNo == 1) {
				// 작성위치
				System.out.print("학생수를 입력하세요 : ");
				studentNum = scan.nextInt();
				scores = new int[studentNum];
			}else if(selectNo == 2) {
				// 작성위치
				for(int i = 0; i < studentNum; i++) {
					System.out.print("점수[" + i + "] : ");
					scores[i] = scan.nextInt();
				}
				
			}else if(selectNo == 3) {
				// 작성위치
				for(int i = 0; i < studentNum; i++) {
					System.out.println("점수리스트 [" + i + "] : " + scores[i]);
				}
			}else if(selectNo == 4) {
				// 작성위치
				int max = 0;
				double total = 0.0;
				for(int i = 0; i < studentNum; i++) {
					if(max < scores[i]) {
						max = scores[i];
					}
					total += scores[i];
				}
				System.out.println("최고점수 : " + max);
				System.out.println("평균점수 : " + (double)total/scores.length);
				
			}else if(selectNo == 5) {
				run = false;
			}
		}
		System.out.println("프로그램 종료");
	}
}
728x90
반응형
LIST