SCJP 기출문제 및 해답(2)




     



1. Which declarations for the main() method in a stand-alone program are NOT valid? Select all valid answers.
  a. public static void main()
  b. public static void main(String[] string)
  c. public static void main(String args)
  d. static public int main(String[] args)
  e. static void main(String[] args)　

2. Which of the following identifiers are ILLEGAL? Select all valid answers.
  a. #_pound
  b. _underscore
  c. 5Interstate
  d. Interstate5
  e. _5_　

3. If the user invokes a stand-alone application by typing:
    java YourApp 1 2 3 and the main() method defines its String[] parameter as args, 
    how can you access the number 2 using args?
    Fill in the blank.　

4. Which interface implementations can you add as listeners for a TextField object? Select all valid answers.
  a. ActionListener
  b. FocusListener
  c. MouseMotionListener
  d. WindowListener
  e. ContainerListener　

5. What must be true for the RunHandler class so that instances of RunHandler can be used as written in the code below:
     class Test {
          public static void main(String[] args) {
               Thread t = new Thread(new RunHandler());
               t.start();
          }
     }
  Select all valid answers.　
  a. RunHandler must implement the java.lang.Runnable interface.
  b. RunHandler must extend the Thread class.
  c. RunHandler must provide a run() method declared as public and returning void.
  d. RunHandler must provide an init() method.　

6. To determine if you can invoke addContainerListener() for a component referenced using a variable named c, which    expression(s) can you evaluate that will give you a true or false answer to this questions?
   Select all valid answers.
  a. c == Container
  b. c.equals(Class.Container)
  c. c instanceof Container
  d. c instanceof Component
  e. c implements Container　

7. Write a statement for a constructor that invokes the no-args, default constructor in its superclass. 
　 Fill in the blank.　

8. What is written to the standard output given the following statement:
     System.out.println(4 & 7);
   Select the one right answer.
  a. 4
  b. 5
  c. 6
  d. 7
  e. 0　

9. What will the following block of code write to the standard output when it is executed?
　  int i = 3;
     int j = 0;
     double k = 3.2;
     if (i < k){
          if (i == j){
               System.out.println(i);
          }
          else{
               System.out.println(j);
          }
     }
     else{
         System.out.println(k);
     }
  Select the one right answer.　
  a. 3
  b. 0
  c. 3.2
  d. none of these

10. How can you use the String method indexOf() to determine which position the letter 'C' is in given this String:
     String s = "ABCDE";
　  Write a complete statement in your answer, but you do not have to assign the letter you retrieve to another variable.
    Fill in the blank.　

11. Given that the variable g references a valid Graphics object, what does the following statement do?
     g.fillRect(2, 3, 10, 20);
　  Select all valid answers.
  a. draw the outline of a rectangle in the current background color
  b. draw the outline of a rectangle in the current foreground color
  c. fill in a rectangle using the current background color
  d. fill in a rectangle using the current foreground color
  e. fill in a rectangle in black　

12. Describe the following applet.
     import java.applet.Applet;
     import java.awt.event.*;
     import java.awt.*;
     public class MyApplet extends Applet {
          Button b1, b2;
          public void init() {
               ActionListener a = new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                         if (evt.getSource() == b1) {
                              b1.setEnabled(false);
                              b2.setEnabled(true);
                         } else {
                              b1.setEnabled(true);
                              b2.setEnabled(false);
                         }
                    }
               };
               b1 = new Button("1");
               b1.addActionListener(a);
               add(b1);
               b2 = new Button("2");
               b2.addActionListener(a);
               add(b2);
          }
     }
  Select all valid answers.　
  a. Nothing appears in the applet
  b. One button appears in the applet but does nothing
  c. Two buttons appear in the applet
  d. When the user clicks a button, nothing happens
  e. When the user clicks a button, it becomes disabled
  f. When a user clicks a button, the other button becomes enabled　

13. The method setBackground() defined for the Graphics class:
　  Select all valid answers.
  a. takes an integer value
  b. takes an instance of class Color
  c. takes an instance of a Component subclass
  d. sets the drawing mode for the associated Component object
  e. sets the drawing color for the associated Component object
  f. changes the background color for the associated Component object　

14. What does the following program do when it is run with the command:
     java Mystery Mighty Mouse
     class Mystery {
          public static void main(String[] args) {
               Changer c = new Changer();
               c.method(args);
               System.out.println(args[0] + " " + args[1]);
          }
          static class Changer {
               void method(String[] s) {
                    String temp = s[0];
                    s[0] = s[1];
                    s[1] = temp;
               }
          }
     }
  Select the one right answer.　
  a. This program causes an ArrayIndexOutOfBoundsException to be thrown
  b. This program runs but does not write anything to the standard output
  c. This program writes "Mighty Mouse" to the standard output
  d. This program writes "Mouse Mighty" to the standard output　

15. What happens when you try to compile and run the following program?
     class Mystery {
          String s;
          public static void main(String[] args) {
                Mystery m = new Mystery();
                m.go();
          }
          void Mystery() {
               s = "constructor";
          }
          void go() {
               System.out.println(s);
          }
     }
  Select the one right answer.　
  a. this code will not compile
  b. this code compiles but throws an exception at runtime
  c. this code runs but nothing appears in the standard output
  d. this code runs and "constructor" in the standard output
  e. this code runs and writes "null" in the standard output　

16. What can you write at the comment //A in the code below so that this program writes the word "running" to the standard     output?
     class RunTest implements Runnable {
          public static void main(String[] args) {
               RunTest rt = new RunTest();
               Thread t =new Thread(rt);
               //A
          }
          public void run() {
               System.out.println("running");
          }
          void go() {
               start(1);
          }
          void start(int i) {
          }
     }
  Select all valid answers.　
  a. System.out.println("running");
  b. rt.start();
  c. rt.go();
  d. rt.start(1);　

17. What order can you place the following pieces of a source file in so that the source file will compile without errors or     warnings?
     //A
     import java.applet.*;
     //B
     class Helper {
     }
     //C
     package myclasses;
     //D
     public class MyApplet extends java.applet.Applet {
     }
  Select all valid answers.　
  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　

18. Analyze these two consequetive lines of code:
     float f = 3.2;
     int i = f;
  Select all valid answers.　
  a. this code would not compile
  b. this code would compile and i would be set to 3
  c. the second line could compile if it were written instead as: int i = (byte)f;
  d. the first line could compile if it were written instead as: float f = 3.2F;　

19. Construct an array of 3 String objects containing the strings "a", "b", and "c" using the { } notation. Call the String by the     variable name s.
　 Fill in the blank.　

20. What is the final value of temp in this sequence?
     long temp = (int)3.9;
     temp %= 2;
  Select the one right answer.　
  a. 0 
  b. 1 
  c. 2 
  d. 3 
  e. 4



<해답>


1. a, c, d, and e 
  -. main()의 프로토타입은 public static void main(String[] args)이고, 제한자의 순서와 배열을 의미하는 괄호의 위치와 배열명을 제외하고는  변경될 수 없습니다.

2. a and c
  식별자 규칙
   -. 사용할 수 있는 문자 : 알파벳 대.소문자, 숫자, _(밑줄 문자), $(달러문자)    
      단, 식별자의 첫 문자가 숫자이면 안됩니다.
   -. 같은 알파벳이라도 대문자, 소문자는 다른 문자로 취급합니다.
   -. 키워드와 같으면 안되지만 길이의 제한은 없습니다.

3. args[1]
  -. 배열은 0부터 시작하므로 args[0]=1, args[1]=2, args[2]=3 이 된다.　

4. a, b, and c. 
  -. d 와 e 는 TextField objects에 대해 허용되지 않는다.

5. a and c 
  -. b는 옵션이고 Interface를 구현하는 방법이 있기 때문에 반드시 그리해야 하는 것은 아니다. 또한 RunHandler는 반드시 run()을 제공해야 하지만 init() 메소드를 반드시 제공해야 하는 것은 아니다.

6. c

7. super();
  -. 상위 클래스의 디폴트 생성자 (no-args)를 호출할 수 있다. 참고로 super 키워드는 하위 클래스에서 상위 클래스의 메소드를 호출해서 이용하고자 할 때, super.메소드명();의 형태로 쓸 수 있다. 
  -. 또한 생성자 안에서 super 키워드를 이용해서 상위 클래스에 있는 적절한 생성자를  호출하는 경우, 이 문장은 반드시 생성자의 첫 번째 문장이어야 합니다. 

8. a
  -. &(AND)연산자는 두 피연산자의 비트가 모두 1이면 결과가 1이지만 두 개가 모두 0이거나 어느 하나가 0이라면 결과는 0이된다. 따라서 4와 7의 binary digits:
        100 
       &111
        ----
        100   or   4.

9. b
  -. if(i<k) 문에서 int i 값은 double 3.0으로 casting 되어서 true를 return 합니다.  
  -. if(i==j)에서는 당연히 false가 return 됩니다.

10. s.indexOf('C');
　-. indexOf 메소드는 String에서 처음 해당하는 문자가 나타나는 곳의 인덱스 값을 return합니다.

11. d
  -. drawRect() 는 사각형의 outline을 그리게 됩니다. 참고로 fillRect()는 사각형의 내부 색을 결정합니다.

12. c, e, and f
  -. 이 applet은 두 개의 button이 나타나고 하나의 button을 클릭하면 그 button은 disable되고 다른 button이 enable됩니다.

13. b and f.
  -. setBackgroud() 메소드는 Color 클래스의 인수를 받아서 해당 Component의 배경색을 변경합니다.

14. d
  -. object의 value가 전달되는 것이 아니고 reference에 의해 전달되기 때문에 내부 클래스는 배열의 entries를 바꾸게 됩니다. 

15. e 
  -. void Mystery()에는 void라는 리턴형이 지정되었으므로 생성자가 아닌 일반 메소드로 처리됩니다. 그런데 프로그램 중에 Mystery  메소드를 호출하는 문장이 없으므로 변수 srk 결과 초기화 되지 않고 null이 출력됩니다.

16. a
  -. instance 'rt'가 아닌 't'를 사용해야 합니다. 이 경우 t.start();는 A에 들어 갈 수 있습니다.

17. c and d
  -. package 문이 맨 처음에 와야 하고 import문장이 다음에 와야 한다. 그리고 클래스의 순서는 상관없다. 단지 public class는 source file당 하나씩만 있어야 한다.

18. a, c, and d
  -. 소수의 기본값은 double이다. 그래서 double이 float보다 더 넓은 범위 이기 때문에 float f=3.2는 틀렸고 float f=3.2f로 고치면 된다. 두 번째 라인에서 float f를 int i에 할당하는 것도 틀렸다. f를 (byte)로 castiong 한 다음에 int i로 할당하는 것이 맞는 것입니다.

19. String s = {"a", "b", "c"};
  -. 이것은 String 배열의 선언 방법에 관한 문제입니다.

20. b
  -. 3.9를 int형으로 casting하므로 temp는 3이되고 3%2는 1이된다.



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

