SCJP 기출문제 및 해답(7)




     



1. Which two statement are there coding the creation of a default constructor?(choose two)
  a. The default constructor initializers method variables
  b. The default constructor invokes the no parameter constructor of the superclass
  c. The default constructor initializers the instance variable declared in the class
  d. If a class lacks a no parameter constructor but has other constructors the compiler creates a default constructor
  e. The compiler creates a default constructor only where there are a other constructor for the class

2. What is the result?
        class A{
           public int getNumber(int a){
              return a + 1;
           }
        }
        class B extends A{
           public int getNumber(int a, char c){
              return a + 2;
           }
           public static void main(String[] args){
              B b = new B();
              System.out.println(b.getNumber(0));
           }
        }
  a. compile succeed and 1, 3 printed
  b. compile succeed and 2 printed
  c. compile succeed and 1 printed
  d. a error at line 8 
  e. a error at line 14

3. (True or False) A signed data type has an equal number of non-zero positive and negative values available.

4. Which identifiers are legal?
  a. taxman20
  b. strawberry-fields
  c. _status
  d. 100cars
  e. xShop

5. Which will declare a method that is a variable to all members of the same package and can be referenced without an instance   of the class?
  a. abstract public void myTest();
  b. public abstract double myTest(){}
  c. static void myTest(double d1){}
  d. public double myTest(){}
  e. protected void myTest(){} 

6. When you invoke a program by passing a class to the Java interpreter, the Java interpreter:
  a. Invokes your class init() method
  b. Invokes your class start() method
  c. Invokes your class main(0 method
  d. Invokes the method that you tell it to start at
  e. Does not invoke any method but waits for interaction whit the user

7. Which two declation prevent the overriding of a method? (choose two)
  a. final void myMethod(){}
  b. void final myMethod(){}
  c. static void myMethod(){}
  d. static final void myMethod(){}
  e. final abstract void myMethod(){}

8. If you invoke a class using the Java interpreter like this:
        java Q12 Albany Boston Chicago Detroit 
   which version of main() will display Chicago in the standard output?
  a. class Q12{
        System.out.println(args[2]);
     }
  b. class Q12{
        public void main(String[] args){
           System.out.println(args[2]);
        }
     }
  c. class Q12{
        public static void main(String[] args){
           System.out.println(args[3]);
        }
     }
  d. class Q12{
        public static void main(String args){
           System.out.println(args[2]);
        }
     }
  e. class Q12{
        public static void main(String[] args){
          System.out.println(args[2]);
        }
     }

9. What is result?
        public class x{
           private static int a;
           public static void main(String[] args){
              modify(a);
              System.out.println(a);
           }
           public static void modify(int a){
              a++;
           }
        }
  a. Not compile
  b. 0
  c. 1
  d. 2

10. What's the result?
        public class Test{
           pulbic static void leftShift(int i, int j){
              i <<= j;
           }
           public static void main(String args[]){
              int i = 4, j = 2;
              leftShift(i, j);
              System.out.println(i);
           }
        }
  a. 2
  b. 4
  c. 8
  d. 16
  e. not compile

11. public class Returnit{
       returntype methodA(byte x, double y){
          return (short)x/y*2;
       }
    }
  return문이 반환하는 리턴 데이터형은 어느것인가?
  a. int
  b. byte
  c. long
  d. short
  e. float
  f. double

12. How many bits are used to maintain a char data type?        

13. Which of the following class definitions defines a legal abstract class?
  a. class Animal{
        abstract void grow1();
     }
  b. abstract Animal{
        abstract void grow1();
     }
  c. class abstract Animal{
        abstract void grow1();
     }
  d. abstract class Animal{
        abstract void grow1();
     }
  e. abstract class Animal{
        abstract void grow1(){
           System.out.println("grow1");
        }
     }

14. public class Test1{
        public static void main(String[] args){
           try{
              System.exit(0);
           }finally{ System.out.println("Finally");}
        }
    }
  What is the result?
  a. The program runs and prints nothing
  b. The program runs and prints "Finally"
  c. The code compiles but an exception is thrown at runtime
  d. The code will not compile because the catch block is missing

15. Which of the following are not Java keywords:
  a. superclass
  b. goto
  c. open
  d. close
  e. integer
  f. import
  g. try

16. public static void main(String[] args){
        System.out.println("value = " + myswitch(4));
        public static int myswitch(int x)[
           int j = 1;
           switch(x){
              case 1: j++;
              case 2: j++;
              case 3: j++;
              case 4: j++;
              case 5: j++;
              default : j++;
           }
           return j + x;
        }
    }
  What is the output from line 3?
  a. 3
  b. 4
  c. 5
  d. 6
  e. 7
  f. 8

17. int i = 1;
    int j = 10;
    do{
        if(i > j)
           break;
        j--;
    }while(++i < 5);
  실행 후 i & j의 값은?
  a. 2
  b. 3
  c. 4
  d. 5

18. 1. public class x{
     2.   public Object m(){
     3.     Object o = new Float(2.14F);
     4.     Object[] oa = new Object[1];
     5.     oa[0] = o;
     6.     o = null;
     7.     oa[0] = null;
     8.     return o;
     9.   }
   10. }
  When is the Float object created in line? eligible for garbage collection?
  a. just after line 5
  b. just after line 6
  c. just after line 7
  d. just after line 8(that is as the method returns)

19. public class test{
        public static void main(String[] args)[
           String one = args[0];
           String two = args[1];
           String three = args[2];
        }
    }  
  And command line invocation:
        java test red green blue
  What's the result?
  a. three has the value of " "
  b. three has the value of null
  c. three has the value of red
  d. three has the value of blue
  e. three has the value of green

20. Which of the following represents an octal number?
  a. 0x12
  b. 320
  c. 032
  d. o32
  e. 7
  f. (octal)7



<해답>


1. b, c
  -. 생성자는 클래스의 이름과 동일하다.
  -. 생성자의 return 타입은 기술하지 않는다.
  -. 만약 클래스 내에 어떠한 생성자도 선언하지 않는다면 Java는 default 생성자를 제공한다.
  -. 만약 argument를 가진 생성자가 있으면 default 생성자는 무효이다.

2. c
  -. class A에 선언된 메소드는 class B가 class A를 상속하면서 class B로 overloading 된 상태로 이때에는 파라미터에 따라서 그에 해당하는 메소드가 호출이 된다. 파라미터로 정수 한자리만 입력되므로 gerNumber(int a) 메소드가 호출이 된다. 
  -. Overloading...
      1) 한 클래스내에 같은 method name을 가지고 다른 argument list를 받아들이는 method를 정의하는것
      2) 다른 argument를 가지고 같은 일을 하고자 할때 사용되며 method 재사용의 한 형태
      3) Overloading시 메소드들의 argument type과 개수는 서로 달라야 한다.
      4) Overloading시 메소드들의 리턴타입은 같지 않아도 무방하다.

3. False
  -. 부호가 있는 데이터혀의 경우, 음수의 수가 양수의 수보다 하나가 더 많은데 그 이유는 0이 포함되어 있기 때문이다.  

4. a, c, e
  -. 숫자는 식별자 처음에 올수 없고, 사용가능한 특수문자는 '_', '$' 두개 밖에 없다.

5. c
  -. 같은 패키지에서 모든 멤버를 이용할 수 있고, 클래스의 인스턴스 없이도 참조할 수 있는 접근 제한자를 고르는 문제이다.
  -. public/protected/private 중 아무것도 지정하지 않으면 디폴트로 같은 패키지에서 모든 멤버를 참조할 수 있고, static으로 지정하면 인스턴스 없이도 참조할 수 있다.

6. c
  -. 자바 인터프리터는 main() 메소드를 호출함으로써 해당 클래스를 수행시킨다. 따라서 application을 작성할 때에는 반드시 main() 메소드가 있어야 한다.

7. a, d
  -. 메소드 선언문 앞에 쓰는 final 키워드는 그 메소드를 하위 클래스에서 오버라이드할 수 없다는 뜻이다. 따라서 final 제한자가 쓰인것을 찾으면 된다.
  -. b는 리턴형이 final보다 앞에 나와있기 때문에 틀렸다.
  -. e는 final은 그 메소드를 하위 클래스에서 오버라이드 할 수 없는데에 반해 abstract는 하위 클래스에서 오버라이드해서 내용을 정의해야 한다. 둘은 정반대의 의미로 함께 사용될 수 없다.

8. e
  -. main() 메소드의 형식은 public static void main(String[] args) 이여야 한다. args[] 표현해도 무방하다.
  -. main() 메소드에 전달되는 명령행 인수는 클래스 이름 바로 오른쪽부터 배열로 저장이 되기  때문에 인덱스는 0, 1, 2, ..... 로 지정이 된다. 따라서 Chicago는 세번째에 있으므로 args[2]가 된다.

9. b
  -. int형은 0으로 초기화가 되고, modify()에서 a의 값을 증가시키지만 이는 어떤 값을 리턴하지도 않고 그 값을 저장하지도 안기 때문에 이 메소드 안에서만 증가가 될 뿐 modify()를 호출한 main() 메소드에서의 a의 값은 변화가 없다. 
  -. modify() 안에 System.out.println(a);를 a++; 다음에 추가한다면 1이 출력될 것이다.      

10. b
  -. 이 문제도 9번 문제와 같은 유형의 문제로 main() 메소드의 i값이 leftShift(i, j)에 의해 영향을 받지 않고 그래로 출력이 된다.

11. d
  -. argument로 byte형과 double형의 인수를 받아서 연산을 하면 범위가 큰 형으로 결과값의 형이 결정이 된다. 따라서 x/y*2의 결과값의 형은 double이 되지만 이를 short로 명시적 캐스팅을 하였으므로 return 되는 데이터형은 short가 된다.

12. 16bits
  -. char 데이터형은 2바이트 이므로 2 * 8(bit) = 16bit 

13. d
  -. a) abstract 메소드가 있는 클래스는 반드시 abstract 클래스가 되어야 한다.
  -. b) class 선언이 되어 있지 않다. 그리고 생성자에는 abstract 제한자를 붙일 수 없다.
  -. c) abstract가 class 보다 앞에서 선언되어야 한다.
  -. e) abstract 메소드는 메소드의 프로토타입만 정의하고, 수행할 내용은 없어야 한다.   

14. a 
  -. finally절에 있는 내용은 예외 발생 여부에 관계없이 항상 수행되며, 심지어는 try절 또는 catch절에 return문이 있더라도 finally절의 내용이 수행된 다음 return된다. 그러나, 단 System.out(0) 문장이 있는 경우에는 finally절을 수행하지 않고 종료된다. 따라서 아무것도 출력되지 않는다.
  -. try/catch/finally문에서 try절은 생략할 수 없고, catch절과 finally절 중 하나는 생략할 수 있다.

15. a, c, d, e
  -. 자바 키워드는 꼭 알아두어야 하면 키워드는 식별자로 사용할 수 없다. 
  -. 자바 키워드는 대문자는 없으며 const, goto도 키워드이다. 

16. f
  -. x의 인수로 4를 받으므로 case문에서는 case 4:인 경우가 수행이 되는데 case문에 break문이 없으므로 있을때까지 계속 수행이 된다. 따라서     case 4:, case 5:, default 가 수행이 되어 j값은 4가 되고 x값도 4가 된다. 

17. c
  -. i = 4, j = 6일때 while 조건식에 의해 조건문을 종료하게 된다. 이를 비트 연산을 하면 0100 & 0110 = 0100 이 된다. 

18. b
  -. 가비지란 더 이상 사용하지 않는 메모리 영역을 말하며, 가비지 컬렉션은 더 이상 사용하지 않는 메모리 영역을 정리하는 작업을 말한다. 
  -. 여기서 Float 오브젝트가 line 3에서 생성되고 line 6에서 null값을 대입해서 원래 o가 가리키던 오브젝트는 더 이상 사용할 수 없으므로 line 6이 수행된 직후 o가 가리키던 오브젝트는 가비지 컬렉션의 대상이 된다.

19. d
  -. 명령행에서 java test red green blue 는
                         args[0] args[1] args[2]   이므로 three의 값은 blue 이다. 

20. c
  -. a는 16진수를 나타내며 8진수는 0(숫자 영)으로 시작된다. 알파벳 o가 아님을 기억하라..



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

