Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

UniCode

[이것이 자바다]CH05.참조타입(확인문제풀이) 본문

이것이 자바다

[이것이 자바다]CH05.참조타입(확인문제풀이)

Uni_code 2021. 3. 23. 21:17

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

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

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

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

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

 

☞ ④ 참조 타입은 null값으로 초기화 할 수 있다. / null값 -> 힙 영역의 객체를 참조하지 않는다는 뜻

 

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

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

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

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

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

 

☞ ③ 참조되지 않는 객체 => JVM은 참조되지 않은 객체를 쓰레기 객체로 취급하고 쓰레기 수집기(Garbage Collector)를 구동시켜 메모리에서 자동 제거한다.

 

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

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

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

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

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

 

☞ ② String 타입의 문자열 비교는 equal()메소드를 사용해야한다. 비교 연산자(==, !=)는 참조 주소의 값을 비교한다.

 

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

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

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

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

④ int[][] array = new int[3][2];

 

☞ ② int[] array;  array = {1 , 2 , 3} ( X )  // 이미 선언된 배열 변수는 객체 생성 연산자(new) 를 사용하여 값을 저장할 수 있다.

     int[] array;  

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

 

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

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

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

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

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

 

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

 

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

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

☞ array.length = 3  //array의 행의 개수

    array[2].length = 5 // array의 세번째 열의 개수

 

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

[Exercise07.java]
public class Exercise07 {
   public static void main(String[] args){
      int max = 0;
      int[ ] array = { 1, 5, 3, 8, 2 };

      //작성 위치
 

      System.out.println( "max : " + max ); 
   }
}

☞ for(int i = 0 ; i<array.length ; i++){

    if(max < array[i]){

        max = array[i];

     }

    } 

 

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

[Exercise08.java]
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 );       
   }
}

int cnt = 0;

for(int i = 0; i < array.length ; i++){

    for(int j = 0; j< array[i].length ; j++){

       sum += array[i][j];

       count++;      // array 배열의 데이터 총 갯수를 구하는 변수 

    }

}

avg = (double) sum/count;

 

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

[Exercise09.java]
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(selecNo == 1){
            //작성위치
         
} else if (selectNo == 2){
            //작성위치
         } else if (selectNo == 3){
            //작성위치
         }else if (selectNo == 4){
            //작성위치
         }else if (selectNo == 5){
            run = false;
         }

     }
      System.out.println("프로그램 종료");
   }
}

[실행 결과]