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 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

+ Recent posts