관리 메뉴

나구리의 개발공부기록

Chapter 03 - 자바(기출문제_3) 본문

2024년도 수제비 실기책(6판) 내용 정리


** 자바 이론은 자바의 정석기초편 글을 참조, 여기서는 생략

21. 자바 소스 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	static int[] MakeArray() {
		int[] tempArr = new int[4];
		for(int i = 0; i <tempArr.length; i++) {
			tempArr[i] = i;	// i의 값을 tempArr[i]에 저장
		}
		return tempArr;	// tempArr배열을 반환
	}
		
	public static void main(String[] args) {
		int[] intArr;	// int타입 배열변수 intArr선언
		intArr = MakeArray(); // MakeArray메서드 호출 결과 intArr에 저장
		for(int i = 0; i < intArr.length; i++) {
			System.out.print(intArr[i]);	// intArr의값을 모두 출력
		}
	}	
}
//0123

22. 자바 소스 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	public static void main(String[] args) {
		int a = 0;
		for(int i = 1; i<999; i++) { // 1 ~ 1998까지 반복
			if(i%3==0 && i%2!=0) { // i가 3의 배수이면서 2로 나누어지지 않는 수의 마지막수를 반환
            	a = i;
			}
		}
		System.out.print(a);
	}	
}
//993

23. 자바 소스 코드의 출력 결과 작성

문제 및 풀이

class Static {
	public int a = 20;
	static int b = 0;
}

public class Soojebi {
	public static void main(String[] args) {
		int a;
		a = 10;
		Static.b = a;	// 클래스에서 직접 접근 -> static 변수만 가능, a의 값을 저장
		Static st = new Static();	// Static 객체 생성
		System.out.println(Static.b++);	// Static 클래스의 b의값을 출력 후 1증가
		System.out.println(st.b);		// 변수로 접근하여 b의 값을 출력
		System.out.println(a);			// main메서드의 지역변수의 값을 출력
		System.out.println(st.a);		// st의 a변수의 값을 출력
	}	
}
// 10
// 11
// 10
// 20

24. 다음 자바 코드의 빈칸에 들어갈 코드를 작성(단, 변수명으로 작성)

문제 및 풀이

class Soojebi {
	static void swap(int[] a, int idx1, int idx2) {
		int t = a[idx1];
		a[idx1] = a[idx2];
		a[___1___] = t;		// 자리바꾸는 메서드
	}
	
	static void Usort(int[] a, int len) {	// 정렬하는 메서드, 매개변수가 2개 필요함
		for(int i = 0; i<len; i++) {
			for(int j = 0; j<len-i-1; j++) {
				if(a[j] > a [j+1]) {
					swap(a, j, j+1);
				}
			}
		}
	}
	
	public static void main(String[] args) {
		int[] item = {5, 4, 9, 1, 3, 7};
		int nx = 6;
		Usort(item, ___2___);	// int타입 배열과 int타입 변수가 전달인자로 필요함
		for(int data : item) {
			System.out.print(data + "");
		}
	}	
}
// 1: idx2
// 2: nx

25. 자바 소스 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	public static void main(String[] args) {
		String str1 = "soojebi";	// 문자열 풀에 저장
		String str2 = "soojebi";	// 문자열 풀에 저장, 이미 같은게 저장되어있으므로 주소만 저장됨
		String str3 = new String("soojebi");	// 새로운 힙에 문자열 저장
		
		System.out.println(str1 == str2);	// 주소를비교
		System.out.println(str1 == str3);	// 주소를비교
		System.out.println(str1.equals(str3));	// 값을 비교
		System.out.println(str2.equals(str3));	// 값을 비교
	}	
}
// true
// false
// true
// true

26. 자바 소스 코드의 출력 결과 작성

문제 및 풀이

package gichool;

class Parent {
	int x = 100;
	Parent() {		// 매개변수 없는 생성자
		this(500);	// 1.Child의 객체를 생성했지만, 조상인 Parent의 기본생성자가 먼저 호출됨
        			// Parent의 매개변수가 있는 생성자를 호출
	}
	Parent(int x) {	// 매개변수가 있는 생성자
		this.x = x;	// 2. 500을 x에 저장
	}
	int getX() {	// x의 값을 반환하는 메서드
		return x;
	}
}

class Child extends Parent {	// 상속
	int x = 4000;
	Child() {		// 매개변수가 없는 생성자
		this(5000);	// 3.해당 생성자가 호출되어 매개변수가 있는 생성자 호출
	}
	Child(int x){	// 매개변수가 있는 생성자
		this.x = x; // 4.매개변수의 값을 변수 x에 저장
	}
}

public class Soojebi {
	public static void main(String[] args) {
		Child obj = new Child();	// Child 객체 생성
		System.out.println(obj.getX());	// getX메서드 호출(Parent의 x를 return)
	}	
}
// 500

27. 자바 소스 코드의 출력 결과 작성

문제 및 풀이

package gichool;

public class Soojebi {
	public static void main(String[] args) {
		Parent c = new Child();	// Child객체 생성, Parent 타입
		c.paint();	// paint메서드 호출
		c.draw();	// draw메서드 호출
	}	
}

class Parent {
	public void paint() {
		System.out.print("A");
		draw();
	}
	public void draw() {		
		System.out.print("B");	// 2. 출력
		draw();					// 3. 동적바인딩 -> 실제객체인 Child의 오버라이딩된 draw()가 호출됨
	}
}

class Child extends Parent {
	public void paint() {	
		super.draw();			// 1. 호출
		System.out.print("C");	// 5. 출력
		this.draw();			// 6. 호출
	}
	public void draw() {
		System.out.print("D");	// 4. 출력 7. 출력 8. 출력
	}
}
// BDCDD

28. 자바 소스 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi {
	public static void main(String[] args) {
		int sum = fact(7);	// fact메서드의 연산결과를 저장
		System.out.println(sum);	// 출력
	}	
	public static int fact(int n) {
		if (n == 1) {	// n이 1이 될때까지 재귀메서드 호출
			return 1; 	// 1. 계속 재귀가 호출 되어 1이 반환 됨
		}
		else {
			return n * fact(n-1);	// 2. 2 * 1 
                                    // 3. 3 * 2
                                    // 4. 4 * 6
                                    // 5. 5 * 24
                                    // 6. 6 * 120
                                    // 7. 7 * 720
		}
	}	
}
// 5040

29. 자바 소스 코드의 오류가 발새앟는 라인의 번호를 작성

문제 및 풀이

class Person {
	private String name;
	public Person(String val) {
		name = val;
	}
	public static String get() {
		return name;	// 여기서 발생함
        				// name은 static변수가 아닌데, get은 static 메서드이므로 컴파일 에러 발생
	}
	public void print() {
		System.out.println(name);
	}
}

public class Soojebi {
	public static void main(String[] args) {
		Person p = new Person("soojebi");
		p.print();
	}	
}
// 7