
SCJP 기출문제 및 해답(5)




     



1. 다음 중 Java Keyword를 모두 고르시오.
  a. zero
  b. instanceof
  c. impleaments
  d. NULL
  e. sizeof 
  f. goto

2. 다음 중 Java identifier로서 옳은 것은 무엇인가?
  a. taxman20  
  b. strawberry-fields
  c. _status
  d. 100bottles
  e. XMachine

3. 다음 중 클래스 정의로 옳은 것은 무엇인가?
  a. protected class MyClass{}
  b. public class MyClass{}
  c. private class MyClass{}
  d. final class MyClass{}
  e. class MyClass{}

4. 관련된 클래스를 특정한 저장공간 내에 위치하도록 하기 위해 사용되는 키워든는 무엇인가?

5. 다음 중 패키지에 대한 설명으로 옳은 것은 무엇인가?
  a. 인터페이스의 모임이다.
  b. 클래스의 모임이다.
  c. 관계된 클래스들을 모아서 이름으로 제공해 주는 방식이다.
  d. 자바에서 제공해 주는 클래스들의 모임으로서 사용자가 패키지를 정의할 수 없다.

6. 다음 중 자바 파일을 만들기 위해 선언한 키워드의 순서 중 옳은 것은 무엇인가?
  a. package, import, class
  b. class, import, package
  c. import, package, class
  d. package, class, import

7. 클래스 내의 main() 메소드를 올바르게 정의한 것은 무엇인가?
  a. void main(String[] args){}
  b. static public void main(String args[]){}
  c. public static void main(String[] args){}
  d. public static int main(String[] args){}
  e. public static void main(String args[]);


8. 다음 중 main() 메소드의 argument로 옳은 것은 무엇인가?
  a. String args[]
  b. String[] args
  c. Strings args[]
  d. String args

9. 아래 코드의 출력결과는 무엇인가?
        public class Test5{
           public static void main(String[] args){
              /* This is the start of a comment
              if(true){
                 Test5 = new test5();
                 System.out.println("Done the test");
              } */
              /* This is another comment */
              System.out.println("The end");
           }
        }
  a. 이 코드는 "Done the test"를 출력한다.
  b. 이 코드는 아무것도 출력하지 않고 종결된다.
  c. 이 코드는 컴파일되지 않는다.
  d. 이 코드는 실행시 어떤 예외를 발생시킨다.
  e. 이 코드는 "The end"를 출력한다.
  f. 이 코드는 "Done the test"와 "The end"를 출력한다.

10. 다음 중 코드 작성시 그 순서가 옳은 것은 무엇인가?
        //A
        import java.applet.*;
        //B
        class Helper{  }
        //C
        package myclasses;
        //D
        public class MyApplet extends java.applet.Applet{  }
  a. A, B, C, D
  b. A, C, B, D
  c. C, A, B, D
  d. C, A, D, B
  e. C, B, A, D 

11. 다음 중 char 변수의 값 a에 대한 표현방법으로 옳은 것은 무엇인가?
  a. 'a'
  b. "b"
  c. new Character(a)
  d. 00a

12. 다음 중 byte type의 변수값의 범위는 무엇인가?
  a. 0 ~ 65, 535
  b. (-128) ~ 127
  c. (-32,768) ~ 32,767
  d. (-256) ~ 255

13. 다음 중 옳지 않은 것은 무엇인가?
  a. int i = 32;
  b. float f = 45.0;
  c. double d = 45.0; 

14. 다음 중 옳은 것은 무엇인가?
  a. long test = 012;
  b. float = -412;
  c. int other = (int)true;
  d. double = 0x12345678;
  e. short = 10

15. 다음 중 기본 자료 타입(primitive data type)이 아닌 것은 무엇인가?
  a. int
  b. bool
  c. float
  d. double
  e. long

16. 다음 중 옳지 않은 것은 무엇인가?
  a. float f = 435;
  b. long l = 054;
  c. double d = 0x77578;
  d. int i = 0.14f;

17. 아래의 코드를 컴파일하고 실행하였을 때 다음 중 결과가 옳은 것은 무엇인가?
        class DataTypes{
           int intType = 4;
           double doubleType;
           boolean booleanType;
           String s;
           DataTypes(){
              System.out.println(intType);
              System.out.println(doubleType);
              System.out.println(booleanType);
              System.out.println(s);
           }
           public static void main(String[] args){
              DataTypes dt = new DataTypes();
           }
        }
  a. 실행결과 4 0.0 false null이 출력될 것이다.
  b. 실행결과 4 0.0 false Then이 출력되고 println() 메소드는 NullPointer Exception이 발생할 것이다.
  c. 컴파일되지 않을 것이다. 왜냐하면 3개의 변수가 정의되지 않았기 때문이다.
  d. 컴파일되지 않을 것이다. 왜냐하면 변수 intType은 선언시 초기화할 수 없기 때문이다.
  e. 컴파일되지 않을 것이다. 왜냐하면 static 메소드에서 인스턴스 변수를 사용할 수 없기 때문이다.

18. 다음 중 옳은 것은 무엇인가?
        float f = 3.2;
        int i = f;
  a. 이 코드는 컴파일되지 않을 것이다.
  b. 이 코드는 i값은 3이 될 것이다.
  c. 만약 int i = (byte)f; 로 바꾼다면 두 번째 문장은 컴파일될 것이다.
  d. float f = 3.2F; 라면 첫 번째 문장은 컴파일될 것이다.



<해답>


1. b, f
  -. Java Keyword들 중에서 대문자로 표현된 것은 없다. 따라서 NULL은 null로 표현해야 한다.
  -. goto와 const는 자바에서 사용되지는 않지만 키워드인것을 명심해야 한다.
  -. 자바에서는 sizeof 연산자를 사용하지 않는다. 왜냐하면 JVM 스스로가 키워드에 대한 size를 정의하기 때문이다.

2. a, c, e
  -. Java identifier로서의 첫 문자는 일반문자와 특수문자 _와 $를 사용할 수 있다.
  -. 숫자는 첫글자에는 사용하지 않으면 허용될 수 있다.
  -. 키워드는 식별자로 사용할 수 없다.

3. b, d, e
  -. 'protected', 'private', 'static'과 같은 지정자는 클래스 멤버의 제어 지정자의 역할로 사용되며 독립적인 클래스의 선언에는 사용할 수 없다. 

4. package
  -. 서로 관련된 클래스 파일들을 특정한 디렉토리에 저장하기 위해 package를 사용하며, import를 사용해서 해당 클래스를 참조할 수 있다.
  -. 예를 들어 package com.sun.java라고 선언하게 되면 모든 클래스 파일들은 '<클래스패스>comsunjava' 디렉토리에 존재하게 된다. 
  -. 패키지 이름은 위와같이 디렉토리 구조와 일치해야 하며, 대소문자를 구별한다는 것에 주의한다.

5. a, b, c

6. a
  -. 파일소스 내에서 패키지 선언은 단 한 번만 가능하고 import와 class들은 다중 선언이 가능하다.

7. b, c
  -. main() 메소드는 String 배열타입의 아규먼트를 갖고 있으며 접근 지정자는 항상 public static 으로 선언되어 있다. 
  -. public과 static의 순서는 바뀌어도 상관없지만 main() 메소드는 body가 정의되어 있어야 한다.

8. a, b
  -. 자바에서는 배열 선언시 배열 표시([])는 위치에 상관없이 변수 앞이나 뒤에 선언할 수 있다. 따라서 a와 b 모두 맞다.
  -. c는 String 에 s가 붙어 틀렷고 d는 []가 빠졌다.

9. e
  -. // 한줄을 주석으로 처리
  -. /* 여러줄을 주석으로 처리 */
  -. /** javadoc를 이용하여 문서를 작성할 때 사용 */
  -. 주석문 /* */ 는 다중라인의 주석을 처리하므로 if문은 주석으로 인해 처리되지 않는다.
     따라서 주석문이 끝나고 난 후의 "The end"만이 출력된다.

10. c, d
   -. 자바 파일의 작성순서는 package, import, class 순으로 작성해야 하며 한 코드 내에 여러개의 클래스들이 선언되어 있는 경우 그 순서는 상관없다.

11. a
  -. char 타입은 single quates('')로 묶여야 한다.  

12. b

13. b
  -. float f = 45.0f; 나 float f = 45.0F; 로 표현해야 한다.

14. a, b, d, e
  -. 자바에서 boolean 타입은 그 자체가 리터럴이며 다른 형으로 변환할 수 없다.  

15. b
  -. 변수들의 유형에는 boolean, char, byte, short, int, long, float, double 이 있다.

16. d
  -. 정밀도가 높은 변수에 정밀도가 낮은 값을 대입할 수 있으나 그 반대로 대입할때에는 캐스팅 연산자를 사용하여야 한다.
  -. 정수형 혹은 실수형 변수에 10진수 뿐만 아니라 b, c와 같이 8진수, 16진수형태로 저장 가능 하다. a의 경우는 배정밀도 관점에서 435.0이 저장될 것이다.

17. a
  -. 객체가 생성될 때 각 자료 타입의 초기화가 발생한다. String s 와 같은 클래스타입의 레퍼런스 에는 default 초기치로 null 값을 갖는다.

18. a, c, d
  -. 이 문장은 컴파일할 때 에러가 발생된다.
  -. float f = 3.2;는 float f = 3.2f;로 표현해야 하며 int i = f;는 캐스팅을 필요로 한다.
  -. c의 경우는 float 타입을 byte 타입으로 캐스팅한 후 int 타입 변수에 할당한 것이다. 



위의 해답중에 틀린 답 또는 설명이 있거나, 의문이 가는 점이 있으면 게시판에 적어주시거나 메일을 보내주세요... 
성심껏 답변해 드리겠습니다.... ^_^ 



