알고리즘/기타퀴즈

이것이 자바다 5장 참조 타입 Quiz

pitang 2021. 9. 12. 03:32
반응형

안녕하세요. pitang입니다.

이것이 자바다 5장 확인 문제 살펴보겠습니다.

 

1번

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

1. 참조 타입에는 배열, 열거, 클래스, 인터페이스가 있다.

2. 참조 타입 변수의 메모리 생성 위치는 스택이다.

3. 참조 타입에서 ==, != 연산자는 객체 번지를 비교한다.

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

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
4번 
참조 타입이란 객체(Object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다.
번지를 통해 객체를 참조한다는 뜻에서 참조 타입이라고 부른다.
참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null값을 가질 수 있다.
null 값도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성된다.

 

2번

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

1. 로컬 변수는 스택 영역에 생성되며 실행 블록이 끝나면 소멸된다.

2. 메소드 코드나, 상수, 열거 상수는 정적(메서드) 영역에 생성된다.

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

4. 배열 및 객체는 힙 영역에 생성된다.

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
3번
힙 영역은 객체와 배열이 생성되는 영역이다.
참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고
JVM은 쓰레기 수집기를 실행시켜 쓰레기 객체를 힙 영역에서 자동으로 제거한다.
개발자는 객체를 제거하기 위해 별도의 코드를 작성할 필요가 없다. 자바는 직접 제거시키는 방법을 제공하지 않는다.

 

3번

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

1. String은 클래스이므로 참조 타입이다.

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

3. 동일한 문자열 리터럴을 저장하는 변수는 동일한 String 객체를 참조한다.

4. new String("문자열")은 문자열이 동일하더라도 다른 String 객체를 생성한다.

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
2번
문자열은 String 객체로 생성되고 변수는 String 객체를 참조한다.
참조 타입 변수의 값은 힙 영역의 객체 주소이므로 결국 ==, != 연산자는 주소 값을 비교하는 것이다.
동일한 주소 값을 갖고 있다는 것은 동일한 객체를 참조한다는 의미이다.
따라서, String 객체는 equals() 메서드를 이용해 문자열을 비교해야 한다.

 

4번

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

1. int[] array = {1, 2, 3};

2. int[] array; array = {1, 2, 3};

3. int[] array = new int[3];

4. int[][] array = new int[3][2];

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
2번
타입[] 변수; , 타입 변수[]; 두 가지로 배열 변수 선언을 할 수 있다.
중괄호 {}는 주어진 값들을 항목으로 가지는 배열 객체를 힙에 생성하고 배열 객체의 번지를 리턴한다.
값의 목록으로 배열 객체를 생성할 때 주의할 점이 2번이다.
배열 변수를 이미 선언한 후에 다른 실행문에서 중괄호를 사용한 배열 생성은 허용되지 않는다.

 

5번

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

1. 정수 타입 배열 항목의 기본 초기값은 0이다.

2. 실수 타입 배열 항목의 기본 초기값은 0.0f 또는 0.0이다.

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

4. 참조 타입 배열 항목의 기본 초기값은 null이다.

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
3번
boolean 타입 배열 항목의 기본 초기값은 false이다.

 

6번

배열의 길이에 대한 문제입니다.

array.length의 값과 array[2].length의 값은 얼마입니까?

int[][] array = {
	{95, 86},
    {83, 92, 96},
    {78, 83, 93, 87, 88}
};

array.length -> ( )
array[2].length -> ( )

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
array.length -> 3           //배열의 길이
array[2].length -> 5     //2번째 배열의 길이

 

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);
    
    }
}

<console>
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(array[i] > max) {
            	max = array[i];
            }
        }
        
        System.out.println("max : " + max);
    
    }
}

 

8번

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

public class Exercise08 {

	public static void main(String[] arge) {
 
 		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);
 
    }
}

<console>
sum : 881
avg : 88.1

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
public class Exercise08 {

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

 

9번

다음은 키보드로부터 학생 수와 각 학생들의 점수를 입력받아서, 최고 점수 및 평균 점수를 구하는 프로그램입니다.

실행 결과를 보고, 알맞게 작성해보세요. (참고로 16라인에서 Scanner의 nextInt() 메서드는 콘솔에 입력된 숫자를 읽고 리턴합니다.)

import java.util.Scanner;

public class Exercise09 {
	
    public static void main(String[] args) {
    
    	boolean run = true;
        int studentNum = 0;
        int[] scores = null;
        Scanner scanner = 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 = scanner.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("프로그램 종료");
    
    }
}

<console>
------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
------------------------------------------------
선택 > 1
학생수 > 3
------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
------------------------------------------------
선택 > 2
scores[0] > 85
scores[1] > 95
scores[2] > 93
------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
------------------------------------------------
선택 > 3
scores[0] : 85
scores[1] : 95
scores[2] : 93
------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
------------------------------------------------
선택 > 4
최고 점수 : 95
평균 점수 : 91.0
------------------------------------------------
1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료
------------------------------------------------
선택 > 5
프로그램 종료

 

⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️

 

더보기
import java.util.Scanner;

public class Exercise09 {
	
    public static void main(String[] args) {
    
    	boolean run = true;
        int studentNum = 0;
        int[] scores = null;
        Scanner scanner = 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 = scanner.nextInt();
            
            if(selectNo == 1) {
            
            	System.out.print("학생수 > ");
                studentNum = scanner.nextInt();
                scores = new int[studentNum];
                
            } else if(selectNo == 2) {
            
            	for(int i = 0; i < studentNum; i++) {
                	System.out.print("scores[" + i + "]>");
                    scores[i] = scanner.nextInt();
                }
                
            } else if(selectNo == 3) {
            
            	for(int i = 0; i < studentNum; i++) {
                	System.out.println("scores[" + i + "] : " + scores[i]);
                }
                
            } else if(selectNo == 4) {
            
            	int max = 0;
                int sum = 0;
                double avg = 0.0;
                
                for(int i = 0; i < studentNum; i++) {
                	if(scores[i] > max) {
                    	max = scores[i];
                    }
                    sum += scores[i];
                }
                avg = (double) sum / studentNum;
                
                System.out.println("최고 점수 : " + max);
                System.out.println("평균 점수 : " + avg);
                
            } else if(selectNo == 5) {
            	run = false;
            }
        }
    	
        System.out.println("프로그램 종료");
    
    }
}

 

감사합니다.

 

*m1 맥북을 사용 중입니다.*

 

 

 

 

 

 

 

728x90
반응형