본문 바로가기

KOSTA : 클라우드 네이티브 애플리케이션 개발 전문가 양성과정

05/08 19일차 Java 문법 Test

728x90

1. 다음 코드의 실행 결과는?

class Test{
	static int num = 1;
    static int num2 = 1;
    public static void main(String args){
    	System.out.println(++num1 + num2++);
    }
}

- 메인 메소드의 매개변수가 String[]가 아닌 String이므로 출력 값이 없습니다.

 

2. 다음 코드에서 변수의 최종 값은?

int num = (double)3.14;

- 타입 미스매치이므로 에러입니다.

 

3. 다음 코드의 실행 결과는?

char a,b;
System.out.println('A'+'B'+""+null);

- 'A'+'B'는 연산시 유니코드 값으로 계산되므로 65+66으로 치환되어 131이 됩니다.

- 131+""은 문자열을 연산하였으므로 정수형에서 문자형으로 "131"이 됩니다.

- "131" + null은 문자열과 null을 연산하여 "131null"이 나오게 됩니다.

 

4. 생성자의 특징으로 올바르지 않은 것은? ㄴ,ㄹ

(ㄱ) 클래스 이름과 동일하다.

(ㄴ) 반환타입은 항상 void로 선언해야 한다.

(ㄷ) 디폴트(기본) 생성자는 클래스 내에 생성자가 없을 경우에만 생성된다.

(ㄹ) 생성자 내에서 다른 생성자는 호출이 불가능하다. 

 

6. java.lang 패키지에대한 설명으로 올바르지 않은 것은? 3,4

(ㄱ) 별도의 import가 필요 없다.

(ㄴ) 주로 String, System 등의 기본적인 클래스가 있다.

(ㄷ) 주로 자료구조(List, Set, Map 등)가 구현된 클래스들이 포함되어 있다. --> java.util에 포함되어있다.

(ㄹ) java.lang.Class라는 클래스가 선언되어 있다. -->class가 아니라 object이다.

 

7. 다음 중 코드의 실행 결과가 나머지와 다른 것은? 3

//ㄱ
int i = 1;
while(i<=5){
	System.out.println(i);
    ++i;
}

//ㄴ
int i = 1;
for(;i<=(5%10);i++){
	System.out.println(i);
}

//ㄷ
int i = 0;
do{
	++i;
    System.out.println(i);
}while(i<=5);

//ㄹ
int i = 1;
while(i<=5){
	System.out.println(i);
    i++;
}

 

14. 다음 코드의 실행 결과는? err

class Myclass{
	
    float num = 0.5f;
    
    public static void main(String[] args){
    	System.out.println(this.num+1);
    }
}

 

- static 메서드에서는 this를 사용할 수 없습니다.

- static은 인스턴스 선언 없이 사용될 수 있기 때문에 인스턴스 자신의 주소를 가르키는 this 문법 사용이 불가합니다.

 

17. 다음과 같은 코드가 있다. 코드작성중 NullPointerException 처리가 될 만한 코드를 작성했다면 어떤 결과가 출력되겠는가?

try{
	throw NullPointerException();
} catch(NullPointerException e){
	return;
    System.out.println("a");
} catch(RuntimeException e){
	System.out.println("b");
} finally{
	System.out.println("c");
}

- return 이후로 다른 구문이 올 수 없습니다.

- return이 없다면, a c가 출력됩니다.

 

23. 아래의 코드에서 컴파일 시 오류가 발생되는 라인을 모두 찾으시오

package com.java.util;

public class CommonUtil{
	int am() {return 1;}
    public int bm() {return 1;}
    protected int cm() {return 1;}
    private int dm() {return 1;}
}
package com.java;
import com.java.util.CommonUtil;

public class CallTest extends CommonUtil{
	int i = 1;
    CallTest() {
    	this.i = 2;
    }
    public static void main(String[] args){
    	CommonUtil o = new CommonUtil();
        CallTest ct = new CallTest();
        
        ct.i += o.am(); // err
        ct.i += o.bm();
        ct.i += o.cm(); // err
        ct.i += o.dm(); // err
    }
}

- default 접근자는 같은 패키지에서만 접근 가능합니다.

- protected 접근자는 같은 패키지나 다른 패키지라도 상속된 자손 클래스에서 접근 가능합니다. 하지만 위에 코드에서는 자손 클래스에 접근한 것이 아닌 다른 패키지에서 부모 클래스에 접근하였기에 현재 패키지에서 접근되지 않습니다.

- private은 같은 클래스에서만 접근 가능합니다.

 

25. 아래의 코드에서 컴파일 시 오류가 발생되는 라인을 모두 찾으시오

class Shape{
	int x,y;
    
    Shape(int x, int y){
    	this.x = x;
        this.y = y;
    }
    
    void info(){
    	System.out.println("x: "+x+" y: "+y);
    }
}

class Rectangle extends Shape{
	Rectangle(){} // err (ㄱ)
    Rectangle(int x, int y){
    	super(x,y);
    }
    void getArea(){
    	Return x*y; // err (ㄴ)
    }
}

public class Test{
	public void info(Shape s){
    	s.info();
        s.getArea();
    }
    public static void main(String[] args){
    	Rectangle rec = new Rectangle(3,7);
    }
}

 

ㄱ - 자동으로 생성되는 super()를 수행하는 생성자가 부모 클래스에 존재하지 않아 에러가 나옵니다. 해결하기 위해서 부모 클래스에 기본 생성자를 만들거나, 자식 클래스 생성자에 부모 클래스에 입력되어 있는 생성자를 입력합니다.

ㄴ - Return은 소문자로 입력해야 합니다.

 

27. 다음 코드의 실행 결과는? err

int x = 1, y = 6;

while(y--){
	x++;
}

System.out.println("x="+x+" y="+y);

 

- while() 문에 조건식이 들어와야 합니다.