Question 15 : 무명클래스의 형태

Given:
10. interface Foo { int bar(); }
11. public class Sprite {
12.      public int fubar( Foo foo) { return foo.bar(); }
13.      public void testFoo() {
14.           fubar(
15.                // insert code here
16.           );
17.      }
18. }

Which code, inserted at line 15, allows the class Sprite to compile?

A. Foo { public int bar() { return 1; } }
B. new Foo { public int bar() { return 1; } }
C. new Foo() { public int bar(){return 1; } }
D. new class Foo { public int bar() { return 1; } }


[Internet]
http://blog.naver.com/caoticc?Redirect=Log&logNo=140045230831
# 익명클래스/무명클래스 (anonymous class)
     - 클래스 또는 인터페이스에 대한 객체를 생성하면서 바로 클래스 또는 인터페이스(내용)를 정의하는 클래스
     - 다시말해서, new 수식이 있는 곳에서 바로 클래스 또는 인터페이스를 정의하는 것
# 무명클래스의 특징
     - 단순한 클래스 또는 인터페이스를 정의하여 사용할 때, 여러 곳에서 사용하는 것이 아니고 단 한 번만 정의하여 사용할 경우 주로 사용
     - 주로 클래스 또는 인터페이스를 구현하여 바로 사용하고자 할 때 이용
# 주의할 점은, 무명클래스는 new 수식의 연장이므로 끝에 꼭 세미콜론(;)을 붙여주어야 한다.
# 예제
     class AnonymousClass {
          public void print() { System.out.print("클래스1"); }
     }
     public class AnonymousExample {
          public static void methodA (AnonymousClass obj) { obj.print(); }
     }
     public static void main(String[] args) {
          methodA (
               new AnonymousClass() {
                    public void print() { System.out.print("클래스2"); }
               });
          }
     }
# 결과 출력
     - 클래스2


Answer: C
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q017. import static  (0) 2008.04.11
Q016. 내부클래스  (0) 2008.04.04
Q014. 열거형  (0) 2008.04.03
Q013. import static  (0) 2008.04.03
Q012. 변수의 적용 범위  (0) 2008.04.01
Question 14 : 열거형

Given:
10. class Nav{
11.      public enum Direction { NORTH, SOUTH, EAST, WEST }
12. }
13. public class Sprite{
14.      // insert code here
15. }

Which code, inserted at line 14, allows the Sprite class to compile?

A. Direction d = NORTH;
B. Nav.Direction d = NORTH;
C. Direction d = Direction.NORTH;
D. Nav.Direction d = Nav.Direction.NORTH;

[HeadFirst Java - p.705]
# 자바5.0에서 추가된, 유효한 값의 집합을 보통 열거(enumeration)라고 부릅니다.
# 열거형의 사용 : 클래스의 일종이므로 클래스처럼 선언하고 사용한다.
     public enum Members { JERRY, BOBBY, PHIL };
     public Members selectedBandMember;
     ...
     if (selectedBandMember == Members.JERRY) {
          ...
     }

Answer: D
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q016. 내부클래스  (0) 2008.04.04
Q015. 무명클래스의 형태  (0) 2008.04.04
Q013. import static  (0) 2008.04.03
Q012. 변수의 적용 범위  (0) 2008.04.01
Q011. 문법 오류  (0) 2008.04.01
Question 13 : import static

Given:
10. package com.sun.scjp;
11. public class Geodetics {
12.      public static final double DIAMETER = 12756.32;
13. }

Which two correctly access the DIAMETER member of the Geodetics class? (Choose two.)

A. import com.sun.scjp.Geodetics;
    public class TerraCarta {
         public double halfway() { return Geodetics.DIAMETER/2.0; }
    }
B. import static com.sun.scjp.Geodetics;
    public class TerraCarta {
         public double halfway() { return DIAMETER/2.0; }
    }
C. import static com.sun.scjp.Geodetics. *;
    public class TerraCarta {
         public double halfway() { return DIAMETER/2.0; }
    }
D. package com.sun.scjp;
    public class TerraCarta {
         public double halfway() { return DIAMETER/2.0; }
    }


[HeadFirst Java - p.189]
# 어떤 클래스를 사용하려면 클래스의 전체이름을 알아야합니다.
# 단, java.lang 패키지에 있는 클래스는 제외합니다.
# 'java.util.ArrayList'의 경우 'java.util'은 패키지명이고, 'ArrayList'는 클래스명입니다.
# 자바에 어떤 ArrayList를 사용할지 알려줘야 하는데, 두가지 방법이 있습니다.
     - import 사용
          import java.util.ArrayList;
          public class MyClass {...}
     - 일일이 입력
          java.util.ArrayList<Dog> list = new java.util.ArrayList<Dog>();
          public void go(java.util.ArrayList<Dog> list) {...}

[HeadFirst Java - p.341]
# 자바5.0에서 새로 추가된 기능 중에 정적 임포트(static import) 기능이 있습니다.
# 이 기능의 가장 큰 단점은 코드를 읽기가 훨씬 어려워질 수 있다는 것입니다.
# 기존 코드
     import java.lang.Math;
     class NoStatic {
          public static void main(String [] args) {
               System.out.println("sqrt " + Math.sqrt(2.0));
               System.out.println("tan " + Math.tan(60));
          }
     }
# 정적 임포트 사용 코드
     import static java.lang.System.out;
     import static java.lang.Math.*;
     class WithStatic {
          public static void main(String [] args) {
               out.println("sqrt " + sqrt(2.0));
               out.println("tan " + tan(60));
          }
     }

Answer: AC
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q015. 무명클래스의 형태  (0) 2008.04.04
Q014. 열거형  (0) 2008.04.03
Q012. 변수의 적용 범위  (0) 2008.04.01
Q011. 문법 오류  (0) 2008.04.01
Q010. HashSet  (0) 2008.03.30
Question 12 : 변수의 적용범위

Given:
13. public class Pass {
14.      public static void main(String []args) {
15.           int x = 5;
16.           Pass p = new Pass();
17.           p.doStuff(x);
18.           System.out.print(” main x = “+ x);
19.      }
20.
21.      void doStuff(int x) {
22.           System.out.print(” doStuff x = “+ x++);
23.      }
24. }

What is the result?

A. Compilation fails.
B. An exception is thrown at runtime.
C. doStuffx = 6 main x = 6
D. doStuffx = 5 main x = 5
E. doStuffx = 5 main x = 6
F. doStuffx = 6 main x = 5


[HeadFirst Java - p.119]
# '인스턴스 변수'는 클래스 내에서 선언됩니다. 메소드 내에서 선언되는 것이 아닙니다.
# '지역 변수(local variable)'는 메소드 내에서 선언됩니다.
# '지역변수'는 사용하기 전에 반드시 초기화해야 합니다. 지역변수는 기본값이 없습니다. 따라서 지역 변수를 초기화하기 전에 사용하려고 하면 컴파일 과정에서 오류가 납니다.

[HeadFirst Java - p.270]
# 메소드 안에서 선언한 것을 지역 변수라고 부르는데, 메소드 매개변수도 지역 변수에 포함됩니다. 지역 변수는 임시 변수며 메소드가 스택에 들어있는 동안만 살아있습니다.
# 클래스 내에서 선언한 것을 인스턴스 변수라고 부르는데, 메소드 내에서 선언한 것은 인스턴스 변수에 포함되지 않습니다. 인스턴스 변수는 그 변수가 속한 객체 안에서 삽니다.

Answer: D
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q014. 열거형  (0) 2008.04.03
Q013. import static  (0) 2008.04.03
Q011. 문법 오류  (0) 2008.04.01
Q010. HashSet  (0) 2008.03.30
Q009. 클래스 관계  (0) 2008.03.30
Question 11 : 문법오류

Given:
23. Object [] myObjects = {
24.      new integer(12),
25.      new String(”foo”),
26.      new integer(5),
27.      new Boolean(true)
28. };
29. Arrays.sort(myObjects);
30. for( int i=0; i<myObjects.length; i++) {
31.      System.out.print(myObjects[i].toString());
32.      System.out.print(” “);
33. }

What is the result?

A. Compilation fails due to an error in line 23.
B. Compilation fails due to an error in line 29.
C. A ClassCastException occurs in line 29.
D. A ClassCastException occurs in line 31.
E. The value of all four objects prints in natural order.


[HeadFirst Java - p.242]
# 자바에서 모든 클래스는 Object라는 클래스를 확장한 것입니다. Object라는 클래스는 모든 클래스의 어머니, 즉 모든 것의 상위클래스입니다.
# 명시적으로 다른 클래스를 확장하지 않은 클래스는 자동으로 Object를 확장한 클래스로 정의됩니다.
     public class Dog extends Object {
     ...
# 초특급 클래스인 Object 클래스에 들어있는 대표적인 4가지 메소드
     - equals(Object o)
     - getClass()
     - hashCode()
     - toString()

[HeadFirst Java - p.250]
# 객체 레퍼런스를 실제 유형으로 캐스트하는 방법
     Object o = al.get(index);
     Dog d = (Dog) o;
     d.roam();
# Dog인지 잘 모르겠다면 instanceOf 연산자를 써서 확인하면 됩니다. 엉뚱한 클래스로 캐스트하면 실행 중에 ClassCastException이 나면서 프로그램이 멎어버립니다.
     if (d instanceOf Dog) {
          Dog d = (Dog) o;
     ...

Answer: C
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q013. import static  (0) 2008.04.03
Q012. 변수의 적용 범위  (0) 2008.04.01
Q010. HashSet  (0) 2008.03.30
Q009. 클래스 관계  (0) 2008.03.30
Q008. 접근제어자  (0) 2008.03.29
Question 10

Given:
11. public class Person {
12.      private name;
13.      public Person(String name) {
14.           this.name = name;
15.      }
16.      public int hashCode() {
17.           return 420;
18.      }
19. }

Which is true?
A. The time to find the value from HashMap with a Person key depends on the size of the map.
B. Deleting a Person key from a HashMap will delete all map entries for all keys of type Person.
C. Inserting a second Person object into a HashSet will cause the first Person object to be removed as a duplicate.
D. The time to determine whether a Person object is contained in a HashSet is constant and does NOT depend on the size of the map.


[HeadFirst Java - p.567]
# HashMap : 원소들을 이름/값 쌍 형식으로 저장하고 접근할 수 있게 해줍니다.
# HashSet : 컬렉션에 중복된 원소가 들어가지 않도록 해주고, 컬렉션 내에서 어떤 원소를 빠르게 찾을 수 있게 해줍니다.
# LinkedHashMap : 일반 HashMap과 거의 똑같지만 원소(이름/값 쌍)가 삽입된 순서를 그대로 유지시켜줄 수도 있고, 원소에 마지막으로 접근했던 순서를 기억하도록 설정할 수도 있다는 점이 다릅니다.

[HeadFirst Java - p.593]
...

Answer: A
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q012. 변수의 적용 범위  (0) 2008.04.01
Q011. 문법 오류  (0) 2008.04.01
Q009. 클래스 관계  (0) 2008.03.30
Q008. 접근제어자  (0) 2008.03.29
Q007. 접근제어자  (0) 2008.03.25
Question 9 : 클래스 관계

Which Man class properly represents the relationship “Man has a best friend who is a Dog”?

A. class Man extends Dog { }
B. class Man implements Dog { }
C. class Man { private BestFriend dog; }
D. class Man { private Dog bestFriend; }
E. class Man { private Dog<bestFriend> }
F. class Man { private BestFriend<dog> }

[Head First Java - p.258]
# 인터페이스의 정의와 구현
     public interface Pet {...} // 정의
     public class Dog extends Canine implements Pet {...} // 구현

Answer: D
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q011. 문법 오류  (0) 2008.04.01
Q010. HashSet  (0) 2008.03.30
Q008. 접근제어자  (0) 2008.03.29
Q007. 접근제어자  (0) 2008.03.25
Q006. Format 클래스  (0) 2008.03.24
Question 8 : 접근제어자

Assume that country is set for each class.

Given:
10. public class Money {
11.      private String country, name;
12.      public String getCountry() { return country; }
13. }

and:
24. class Yen extends Money {
25.      public String getCountry() { return super.country; }
26. }
27.
28. class Euro extends Money {
29.      public String getCountry(String timeZone) {
30.           return super.getCountry();
31.      }
32. }

Which two are correct? (Choose two.)

A. Yen returns correct values.
B. Euro returns correct values.
C. An exception is thrown at runtime.
D. Yen and Euro both return correct values.
E. Compilation fails because of an error at line 25.
F. Compilation fails because of an error at line 30.


[Head First Java - p.262]
# 어떤 구상 클래스를 만들어서 메소드를 오버라이드해야 하는데 그 메소드의 상위클래스 버전에 있는 행동이 필요하다면, 즉 오버라이드 할 때 기존의 메소드를 완전히 버리지 않고 상위클래스의 행동에 좀더 구체적인 기능을 추가하기만 할 때는 super를 사용하면 된다.

[Head First Java - p.701]
# public - 어디에 있는 어떤 코드에서도 접근할 수 있다.
# protected - 같은 패키지에 있는 코드에서 접근할 수 있고 다른 패키지에 속하는 하위클래스에서도 상속할 수 있다.
# default - 같은 패키지에서만 접근할 수 있다.
# private - 같은 클래스에 있는 코드에서만 접근할 수 있다.

Answer: BE
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q010. HashSet  (0) 2008.03.30
Q009. 클래스 관계  (0) 2008.03.30
Q007. 접근제어자  (0) 2008.03.25
Q006. Format 클래스  (0) 2008.03.24
Q005. 클래스의 형변환  (0) 2008.03.23

+ Recent posts