Question 16 : 내부클래스

Click the Exhibit button.
10. interface Foo {
11.      int bar();
12. }
13.
14. public class Beta {
15.
16.      class A implements Foo {
17.           public int bar() { return 1; }
18.      }
19.
20.      public int fubar( Foo foo) { return foo.bar(); }
21.
22.      public void testFoo() {
23.
24.           class A implements Foo {
25.                public int bar() { return 2; }
26.           }
27.
28.           System.out.println( fubar( new A()));
29.      }
30.
31.      public static void main( String[] argv) {
32.           new Beta().testFoo();
33.      }
34. }

Which three statements are true? (Choose three.)

A. Compilation fails.
B. The code compiles and the output is 2.
C. If lines 16, 17 and 18 were removed, compilation would fail.
D. If lines 24, 25 and 26 were removed, compilation would fail.
E. If lines 16, 17 and 18 were removed, the code would compile and the output would be 2.
F. If lines 24, 25 and 26 were removed, the code would compile and the output would be 1.


[HeadFirst Java - p.410]
# 내부클래스에서는 외부클래스의 모든 메소드와 변수를 사용할 수 있습니다. 심지어 private로 지정된 메소드와 클래스도 전부 쓸 수 있습니다. 내부클래스에서는 그런 외부클래스의 변수와 메소드도 모두 내부클래스 안에서 선언한 것처럼 사용하면 됩니다.
# 간단한 내부클래스 (내부클래스에서 외부클래스 변수를 사용하는 방법)
     class MyOuterClass {
          private int x;
          class MyInnerClass {
               void go() { x = 42; }
          }
     }


Answer: BEF
반응형

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

Q018. 인터페이스  (0) 2008.04.13
Q017. import static  (0) 2008.04.11
Q015. 무명클래스의 형태  (0) 2008.04.04
Q014. 열거형  (0) 2008.04.03
Q013. import static  (0) 2008.04.03
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

"삼성이 대한민국 최고의 직업".. 구직자 선호도 1위
http://www.ebn.co.kr/news/n_view.html?id=327848

구직자 선호기업 1위 '삼성전자', 선호그룹 1위 '삼성'
http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=001&oid=098&aid=0001953815&

삼성전자, 입사하고 싶은 기업 1위
http://www.segye.com/Articles/NEWS/ECONOMY/Article.asp?aid=20080401000443&subctg1=&subctg2=


나는 행복한 것이겠지!? ^.^
반응형
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

+ Recent posts