Question 17 : import static

Given:
1. package sun.scjp;
2. public enum Color { RED, GREEN, BLUE }

1. package sun.beta;
2. // insert code here
3. public class Beta {
4.      Color g = GREEN;
5.      public static void main( String[] argv)
6.      { System.o ut.println( GREEN); }
7. }

The class Beta and the enum Color are in different packages.

Which two code fragments, inserted individually at line 2 of the Beta declaration, will allow this code to compile? (Choose two.)

A. import sun.scjp.Color.*;
B. import static sun.scjp.Color.*;
C. import sun.scjp.Color; import static sun.scjp.Color.*;
D. import sun.scjp.*; import static sun.scjp.Color.*;
E. import sun.scjp.Color; import static sun.scjp.Color.GREEN;

[HeadFirst Java - p.261]
# 패키지가 원래 이름 충돌을 방지하기 위한 용도로 만들어진 것은 아니지만, 이름 충돌을 방지하는 것도 패키지의 핵심적인 기능 가운데 하나라고 할 수 있습니다.
# 클래스를 package에 집어넣는 방법
     1. 패키지 명을 결정합니다.
          - "com.headfirstjava"를 예로 들면, 클래스 명이 'PackageExercise'라면
          - 전체이름은 "com.headfirstjava.PackageExercise"
     2. 클래스에 package 선언문을 집어넣습니다.
          - 소스코드 파일의 첫번째 선언문이어야 한다.
          - 소스 파일 하나에 들어있는 클래스는 모두 같은 패키지에 들어있어야 한다.
          - package 선언문이 하나밖에 들어갈 수 없기 때문이다.
     3.디렉토리 구조를 패키지 구조에 맞게 설정
          - PackageExercise의 소스코드는
          - com이라는 디렉토리 밑에 있는 headfirstjava라는 디렉토리 밑에 위치

[HeadFirst Java - p.261]
# 정적 임포트를 사용한 코드
     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: CE
반응형

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

Q019. 클래스의 형변환  (0) 2008.04.13
Q018. 인터페이스  (0) 2008.04.13
Q016. 내부클래스  (0) 2008.04.04
Q015. 무명클래스의 형태  (0) 2008.04.04
Q014. 열거형  (0) 2008.04.03
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=


나는 행복한 것이겠지!? ^.^
반응형

+ Recent posts