본문 바로가기

자바/명품 자바 프로그래밍

명품 자바 프로그래밍 7장 이론문제 / 2022.01.02

 

1. 컬렉션에 관한 설명으로 틀린 것은?

③ Wrapper 클래스를 이용하여 객체로 만들어 저장하면 된다.

2. 다음 빈칸에 적절한 단어를 기입하라.

클래스, 인터페이스, 메소드를  특정 타입에 종속되지 않게 일반화시켜 작성하는 기술을 제네릭이라 한다. Vector<E>에서 E는 제네릭 타입 혹은 타입 매개변수라고 부른다. E에 Integer 등과 같이 객체 타입을 지정하여 특정 타입의 데이터만 다루도록 만드는 작업을 구체화라고 한다. 제네릭 기능은 C++에서 먼저 만들어졌으며 C++에서는 템플릿이라고 부른다.

3. 다음 코드에 대한 설명으로 틀린 것은?

② 최초 크기가 30이고 더 추가할 수 있다

4. 다음 물음에 적합한 코드를 간단히 작성하라.

(1) Vector<String> sv = new Vector<String>();

(2) HashMap<String, Double> h = new HashMap<String, Double>();

(3) ArrayList<Person> pa = new ArrayList<Person>(10);

(4) HashMap<String, Integer> pop = new HashMap<String, Integer>(); 

5. 다음 코드에서 맞는 것은?

6. 다음 코드에서 자동 박싱과 자동 언박싱이 일어나는 곳을 지적하라.

v.add(3.14); // 자동 박싱
double d = v.get(0); // 자동 언박싱

7. 다음 프로그램은 초기에 벡터의 크기를 3으로 설정하였다. for 문을 실행하고 벗어났을 때 벡터의 용량이 어떻게 변했는지 확인하라. 벡터는 용량이 모자랄 때, 한 번에 얼마만큼씩 용량을 늘리는가?

초기 용량 3-> 2배 증가 6 -> 2배 증가 12

답 : 벡터의 용량은 12

8. 주석문을 참고하여 빈칸에 적절한 코드로 채워라.

ArrayList<String> a = new ArrayList<String>(10);
a.add("Java");
a.add(0, "C++");
System.out.println(a.size());
a.remove(a.size() -1);

9. 다음에서 밑줄친 부분과 동일하게 작동하도록 Iterator를 이용하여 다시 작성하라.

Vector<Integer> v = new Vector<Integer>();
for(int i=0; i<10; i++) v.add(i);

Iterator<Integer> it = v.iterator();
while(it.hasNext()){
    int n = it.next();
    System.out.print(n + " ");
}

10. 다음은 해시맵 h를 만들고, func(h) 메소드를 호출하여 h에 들어 있는 원소의 개수를 리턴받아 출력하는 코드이다. func() 메소드를 작성하라.

public static int func(HashMap<String, Integer> map) {
    return map.size();
}

11. 다음 제네릭 클래스에 대해 아래 문항에 답하라.

(1) 1개 , W

(2) JGeneric<String> jg = new JGeneric<String>("hello", "java");

(3) public W first() { return x; }

(4) public W second() { return y; }

(5) public boolean equal() { return x.equals(y); } 

(6) System.out.println(jg.equal());

12. 다음 질문에 답하라.

(1) 문자열 배열과 인덱스를 매개변수로 받아 문자열배열[인덱스]를 리턴하는 메소드이다.

(2) 

class JGenClass {
    static T take(T s[], int index) {
        if (index > s.length) {
            System.out.println("인덱스가 범위를 벗어났습니다.");
            return null;
        }
        return s[index];
    }
}

 

(3)

class JGenClass {
    static <T> T take(T s[], int index) {
        if (index > s.length) {
            System.out.println("인덱스가 범위를 벗어났습니다.");
            return null;
        }
        return s[index];
    }
}
public class Example {
    public static void main(String[] args) {
        String [] text = { "Hello", "Java", "World" };
        System.out.println(JGenClass.take(text, 1)); 
        Integer [] n = { 0,1,2,3,4,5 }; 
        System.out.println(JGenClass.take(n, 1)); 
    }
}