SCJP 기출문제 및 해답(8)




     



1. String foo = "blue";
   boolean[] bar = new boolean[1];
   if(bar[0]){
      foo = "green";
   }
  What is the result?
  a. foo has the value of ""
  b. foo has the value of null
  c. foo has the value of "blue"
  d. foo has the value of "green"
  e. An Exception is thrown
  f. The code will not compile

2. What will happen when you try to compile and run the following program?
        class Car{
           int milesPerGallon;
           int index;
           Car(int mpg){
              milesPerGallon = mpg;
              index = 0;
           }
           Car(){
           }
           public static void main(String[] args){
              int index;
              Car c = new Car(25);
              if(args.length > 0)
                 if(args[index].equals("Hiway"))
                    milesPerGallon *= 2;
              System.out.println("mpg: " + milesPerGallon);
           }
        }
  a. The code compiles and displays "mpg: 50" if the command-line argument is "Hiway". If the command-line argument is not      "Hiway", the code displays "mpg: 25".
  b. The code compiles and displays "mpg: 50" if the command-line argument is "Hiway". If the command-line argument is not      "Hiway", the code throws an ArrayIndexOutOfBoundsException.
  c. The code does not compile because the automatic variable named index has not been initialized.
  d. The code does not compile because milesPerGallon has not been initialized.
  e. The code does not compile because the no-args constructor is not written correctly.

3. What will happen when you attempt to compile and fun the following program by passing the
   Test class to the Java interpreter?
        class Test{
           public static void main(){
              System.out.println("hello");
           }
        }
  a. The program does not compile because main() is not defined correctly
  b. The program compiles but when you try to run the interpreter complains that it cannot find the main() method it needs to run
  c. The program compiles but you cannot run if because the class is not declared as public
  d. The program compiles and runs without an error but does not display anything in the standard output
  e. The program compiles and displays "hello" in the standard output when you run it

4. Which color is used to indicate instance methods in the standard "javadoc" format documem tation:
  a. blue
  b. red
  c. purple
  d. orange

5. int index = 1;
   String[] test = new String[3];
   String var = test[index];
  What is the result?
  a. var has the value ""
  b. var has the value null
  c. an exception is throw
  d. the code will not compile

6. public class Test3{
      public static void main(String[] args){
         unsigned byte b = 0;
         b--;
      }
   }
  What is the value of b?
  a. 1
  b. 255
  c. 127
  d. fail
  e. complition will succeed but the program will thrown an exception at line 1

7. What is the result?
        public class Test3{
           static void replaceJ(String text){
              text.replace('j', 'i');
           }
           public static void main(String[] args)[
              String text = new String("java");
              replaceJ(text);
              System.out.println(text);
           }
        }

8. What does the zeroth element of the string array passed to the public static void main method contain?
  a. The name of the program
  b. The number of arguments
  c. The first argument if one is present 

9. What will happen if you attempt to compile the three classes below and run the Test4 class?
        class President{
           int born;
           President(int born){
              this.born = born;
           }
        }
        class Washington extends President{
        }
        class Test4{
           public static void main(String[] args)[
              Washington w = new Washington();
              System.out.println(w.born);
           }
        }
  a. The code will compile
  b. The code will not compile
  c. The println() method will display 0 to the standard output
  d. When you run Test4, the Java Virtual Machine will halt the program by throwing a ClassNotFoundException
  e. The compiler will complain that Washington does not have a default constructor
  f. The compiler will complain that President does not have a default constructor

10. What will appear in the standard output when you attempt to compile both classes and run the Washington class below?
        abstract class President{
           int born;
           President(int born){
              this.born = born;
              System.out.println("born:" + born);
           }
        }
        class Washington extends President{
           Washington(int born){
              super(born);
           }
           public static void main(String[] args){
              Washington w = new Washington(1732);
           }
        }
  a. The code will compile and born: 1732 will appear in standard output
  b. The code will compile but nothing will appear in the standard output
  c. The code will not compile because President is abstract
  d. The code will not compile because there is no default, no-args constructor for Washington

11. What is the results?
        class A{
           public String tostring(){
              return "4";
           }
        }
        class B extends A{
           public String tostring(){
              return super.tostring() + "3";
           }
        }
        public class Test{
           public static void main(String[] args){
              System.out.println(new B());
           }
        }
  a. 4
  b. 3
  c. 43
  d. not compile

12. class Super{
      public integer getLength(){ return new Integer(4);}
     }
     public class Sub extends Super{
      public Long getLength(){ 
         return new Long(5);
      public static void main(String[] args){}
      Super sooper = new Super();
      Sub sub = new Sub();
      System.out.println();
      sooper.getLength(), toString90 + "," + sub.getLength().toString
      }
   } 
  a. 4, 4 
  b. 4, 5
  c. 5, 4
  d. 5, 5
  e. The code will not compile

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

14. What is wrong with the following code?
        final class First{
           private int a = 1;
           int b = 2;
        }
        class Second extends First{
           public void method(){
              System.out.println(a + b);
           }
        }
  a. You cannot invoke println() without passing it a String
  b. Since a is private, no classes other than First can access it
  c. Second cannot extend First
  d. final is not a valid keyword for a class

15. Why is this class unable to compile?
        class Bounce implements Runnable{
           public static void main(String[] args){
              new Thread(new Bounce()).start();
           }
           public void run(int milliseconds){
              while(true){
                 System.out.println("boing...");
                 try{
                    Thread.sleep(1000);
                 }
                 catch(InterruptedException ie){
                 }
              }
           }
        }
  a. sleep() is not invoked correctly
  b. The Runnable interface is not implementd correctly
  c. sleep() does not throw InterruptedException
  d. Objects cannot implement the Runnable interface
  e. The compiler will complain that the run() method forever

16. Which two are equivalent?
  a. 3/2
  b. 3<2
  c. 3*4
  d. 3*2^2
  e. 3<<2
  f. 3<<<2

17. Given this code snippet:
        double a = 90.7;
        double b = method(a);
        System.out.println(b);
  If this snippet display 90 in the standard output, what Math method did method() invoke?
  a. abs()
  b. min()
  c. floor()
  d. round()
  e. ceil()

18. public class ExceptionTest{
       class TestException extends Exception{}
       public void runTest() throws TestException{}
       public void test()/* point */{
          runTest();
       }
    }
  At point x on line4, which code can be added to make the code compile?
  a. throws Exception
  b. catch{ Exception e}
  c. throws RuntimeException
  d. catch(TestException e)
  e. No code is necessary

19. Which constructs a DataInputStream?
  a. new DataInputStream("input.txt");
  b. new DataInputStream(new File("input.txt"));
  c. new DataInputStream(new FileReader("input.txt"));
  d. new DataInputStream(new InputStream("input.txt"));
  e. new DataInputStream(new FileInputStream("input.txt")); 

20. How can you create a listener class that receives event when the mouse is moved?
  a. by extending MouseListener
  b. by implementing MouseListener
  c. by extending MouseMotionListener
  d. by implementing MouseMotionListener
  e. either by extending MouseMotionListener or extending MouseListener
  f. either by implementing MouseMotionListener or implement MouseListener



<해답>


1. c
  -. if문에서 bar[0]값을 체크하는데 boolean형은 false로 초기화가 되므로 if문 안의 문장은 수행되질 않는다. 따라서 foo는  "blue"의 값을 갖게 된다.

2. c
  -. 클래스에 속해있는 멤버변수의 경우에는 프로그램상에 초기화하는 코드가 없더라도 데이터형에  따라 기본 초기값이 들어있어서 아무런 문제가 없지만, 메소드에 속해있는 자동변수인 경우에는 반드시 초기화를 해주어야 한다. 그렇지 않으면 compile 에러가 발생한다.
  -. main() 메소드에서 index를 초기화하지 않았기 때문에 compile 에러가 발생한다.

3. b
  -. java.exe는 실행시 지정한 클래스이름(이 경우 Test)을 참조해서 해당 파일을 메모리로 불러 들이고 그 다음 Test.class 파일에 있는 main() 메소드를 찾아서 수행시킨다. 따라서, 컴파일은 되겠지만 실행시 main() 메소드에 인수(String[] args)가 빠졌기 때문에 실행이 되지 않는다.

4. b
  -. 자바 토큐먼트에서 제공하는 일반적인 메소드는 붉은색으로 화면에 표시된다.

5. b
  -. 오브젝트형은 초기화가 null로 된다. 따라서 Stirng은 오브젝트형이므로 test[index], 즉 test[1]의 값은 null이 된다.

6. d
  -. 정수계열 데이터형(byte, short, int, long)에 unsigned type은 없다. 따라서 컴파일에러가 발생한다.

7. java
  -. main() 메소드내에서 replaceJ(text)를 호출하지만 이는 repalceJ() 메소드의 기능만 수행하는 것이지 main() 메소드에는 영향을 미치질 않는다. 다시말하면 System.out.println(text)의 text객체는 String text = new String("java")의 text지 replaceJ()에서 변경된 text객체가 아닌것이다. 
  -. 이를 보통 값에 의한 호출이라고 하는데 호출한 메소드에서 값만 전달할 뿐이지 호출한 메소드에는 어떠한 영향도 미치질 않는다.

8. c
  -. 명령행 인수의 첫번째 인수, 즉 args[0]가 무엇인지를 물어보는 문제이다.

9. b, f
  -. Washington w = new Washington() 문장이 수행이 되면 디폴트 생성자가 호출되는데 Washington 클래스에도, Washington은 President 클래스를 상속하므로 President 클래스에도 디폴트 생성자가 없다. 
  -. 디폴트 생성자가 자동적으로 제공되는 경우는 어떤 클래스에 대해서 프로그래머가 정의한 생성자가 하나도 없는 경우뿐이다. 따라서 President(int born)이라는 생성자가 있기 때문에 디폴트 생성자가 자동적으로 제공되지 않았으며, 이런 경우에는 President(){}라는 디폴트 생성자를 만들어 주어야 한다.

10. a
  -. 위의 문제와 같은 내용의 문제로 Wahington w = new Washington(1732)는 생성자 Washington(int born)를 호출한다. 따라서 이럴땐 디폴트 생성자가 꼭 필요한 것은 아니다. main() 메소드에서 Wahington w = new Washington()와 같이 생성했다면 디폴트 생성자가 필요할 것이다. 

11. c
  -. super 키워드는 하위클래스에서 상위클래스의 메소드를 호출할 때 사용된다. 따라서, class B의 super.tostring()은 class A의 메소드를 호출  
하게 되고 4를 리턴한다. 그리고, 여기에 "3"을 결합하게 되어 43을 출력하게 된다.

12. e
  -. 위의 문장은 당연히 컴파일되질 않져...
  -. 자바실행시 제일먼저 인식하게 되는 main() 메소드의 내용이 아무것도 없고, 따라서 클래스의 객체를 생성시켜 주질 못하져.... 글구 코드 여기 저기가 문법에 맞질 않져...

13. String s[] = {"a", "b", "c"}
  -. 배열의 선언방법을 물어보는 문제로 String object로 선언해야 하며 "a", "b", "c"로 배열을 초기화 하라는 문제이다.

14. b, c
  -. First 클래스가 final로 선언이 되어 있으므로 Second 클래스에서 상속할 수 없으며, Second 클래스에서 변수 a를 참조하는데 이는 private로 선언되어 있기 때문에 참조할 수 없다.

15. b
  -. 자바에서는 여러개의 상위클래스를 지정하는 다중 상속을 허용하지 않기 때문에 Runnalbe() 인터페이스를 구현하는 클래스를 정의하여 run() 메소드를 오버라이드 한 다음, 이 클래스의 인스턴스를 생성해서 start() 메소드를 호출하면 된다. 
  -. Runnable 인터페이스에 선언되어 있는 run() 메소드의 프로토타입은 public void run()으로 파라미터가 없다.

16. c, e
  -. x<<n은 정수 x를 n비트 왼쪽으로 이동시키고, 오른쪽 비트는 항상 0으로 채운다. 

17. c
  -. floor()는 소수점 이하를 버리는 메소드이다.

18. a

19. e
  -. input.txt라는 파일을 오픈하는 것이므로 FileInputStream 클래스를 이용해야 한다.

20. d
  -. MouseMotion이벤트는 컴포넌트의 영역내에서 마우스를 움직였을때 발생하는 이벤트로 이들 이벤트 자체는 MouseEvent를 그대로 사용하지만 MouseMotionListener에서 처리된다.



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



