본문 바로가기

JAVA

java #문제 풀기1 객체문제

05. 다음 코드에는 문법적인 오류가 없다. (O,X)


public class Test05 {

public static void main(String[] args) {
Test05 s = new Test05();

  }
}

 

07. 다음 코드에서 오류를 찾아 수정하시오.

class Util {
	public double findPi() {
		return 3.14;
	}
}
public class MathTest {

	public static void main(String[] args) {
		Util u = new Util(); // 10 라인 u.findPi()에서 에러발생! u가 정의되지 않았다고 하여서
		System.out.println(u.findPi()); // 위 메소드 호출을 재정의함!
	}

}

 

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

class Sklass {
	static int i;
	Sklass() {
		i++;
		System.out.println(i);
	}
}

class Oklass {
	int i;
	Oklass() {
		i++;
		System.out.println(i);
	}
}
public class PrintTest {

	public static void main(String[] args) {
		new Sklass(); new Sklass(); Sklass s = new Sklass();
		new Oklass(); new Oklass(); Oklass o = new Oklass();
		System.out.printf("s.i = %d, o.i = %d",s.i,o.i );
		
	}

}

예상 실행결과 : 2 2

실제 실행결과 : 3 1

 

틀린 이유: static 하고 non -static 차이를 정확하지 알지 못하였음

전역변수나 전역 함수는 static으로 클래스에 작성, non-static은 메인 메소드까지 전달되지 않아서 1로 변함이 없는 것 같다!!

 

09. 다음 코드에서 오류를 찾고, 그 이유를 설명하여라.

public class Student {
	String name;

	Student(String name) {
		this.name = name;
	}
	
	Student() {
		System.out.println("no argument");
        this("no name"); 
	}

}

이유: this는 첫 줄에 작성해야 하므로 System.out.println("no argument") 와 this("no name"); 자리를 바꿔주면 된다.

 

10. 다음 코드에서 오류를 찾아 수정하시오.

 

public class FooTest {

	public static void main(String[] args) {
		show();

	}
	
	public void show() {
		System.out.println("show");
	}

}

 

public void show() 라인에 static을 추가해야 메인 메소드에도 사용할 수 있다.