관리 메뉴

나구리의 개발공부기록

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

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


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

 

1. 자바 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi{
  public static void main(String[] args){
    int i;
    int []a = {0, 1, 2, 3};  // 인트 타입 배열 a에 0,1,2,3을 저장
    for (i=0; i<4; i++){     // 0 ~ 3까지 반복하여 a배열의 값을 출력
      System.out.print(a[i] + " ");
    }
  }
}
// 0 1 2 3

2. 자바 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi{
  public static void main(String[] args){
	int i = 3;
    int k = 1;
    switch(i) {  // 스위치문 시작
    case 0:
    case 1:
    case 2:
    case 3: k=0;   // 여기로 이동, k = 0으로 초기화
    case 4: k+=3;  // break문이 없기 때문에 해당 코드가 실행되어 k = 3이됨
    case 5: k-=10; // 마찬가치로 해당코드가 실행되어 k = -7(3 - 10)가됨
    default: k--;  // 마찬가지로 break문이 없어서 해당 코드도 실행되어 k에 -1연산
    }
    System.out.print(k);
  }
}

// -8

3. 다음 자바코드 밑줄에 들어갈 키워드 작성

문제 및 풀이

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

class Child extends Parent{  // Parent 클래스를 상속받은 Child 클래스
  public void show(){        // show()메서드 오버라이딩
    System.out.println("child");
  }
}

public class Soojebi{
  public static void main(String[] args){
    Parent pa = _________ Child();  // 객체(인스턴스)를 생성하는 코드를 완성
    pa.show();
  }
}

// new

4. 자바 코드의 출력 결과 작성

 

문제 및 풀이

class A{
  private int a;    // private 제어자를 붙힌 변수 a
  public A(int a){  // A클래스의 생성자
    this.a = a;     // 매개변수의 a값을 클래스 변수 a에 저장
  }
  public void display(){
    System.out.println("a="+a);  // a의 값을 출력하는 메서드
  }
}

class B extends A{   // A클래스를 상속받은 B클래스
  public B(int a){   // B클래스의 생성자
    super(a);        // 조상클래스의 생성자를 a의값으로 호출
    super.display(); // 조상클래스의 display메서드 호출
  }
}

public class Soojebi{
  public static void main(String[] args){
    B obj = new B(10);  // B클래스의 객체를 생성 -> 생성자 호출이됨
  }
}

//a=10

5. 자바 코드의 출력 결과 작성

문제 및 풀이

public class Soojebi{
  public static void main(String[] args){
    int i=0;
    int sum=0;
    while(i<10){  // 10미만까지 반복 , 
      i++;        // i의 값 증가 0 -> 1, 1 -> 2 ... 9 -> 10
      if(i%2==1)  // 홀수는 패스
        continue;
      sum += i;  // 2 + 4 + 6 + 8 + 10
    }
    System.out.println(sum);
  }
}
// 30

6. 자바 코드의 출력 결과 작성

문제 및 풀이

abstract class Vehicle {  // 추상클래스
  String name;
  abstract public String getName(String val);  // 추상 메서드
  
  public String getName(){          
    return "Vehicle name: " + name;  //  클래스 변수인 name의 값을 반환하는 메서드
  }
  public void setName(String val) {
    name = val;  // 매개변수의 값을 클래스 변수 name에 저장하는 메서드
  }
}

class Car extends Vehicle{  // Vehicle 클래스를 상속받은 Car 클래스
  public Car(String val){   // 매개변수가 있는 Car클래스의 생성자
    setName(val);           // 생성자가 호출 되면 setName메서드(조상)를 호출, 아규먼트값은 val
  }
  
  public String getName(String val) {  // 매개변수가 String 타입인 getName 메서드
    return "Car name: " + val;
  }
  
  public String getName(byte val[]) {  // 매개변수가 byte[]인 getName 메서드
    return "Car name: " + val;
  }
}

public class Soojebi {
  public static void main(String[] args) {
    Vehicle obj = new Car("Spark");      // Car인스턴스를 Vehicle 클래스 타입 변수로 생성
    System.out.println(obj.getName());   // 전달인자가 없는 getName메서드 즉, 조상의 getName()메서드 호출
  }
}

//Vehicle name: Spark

7. C++ 에서 생성자란 무엇인지 작성

갑자기 C++????????????????

 

  • 인스턴스를 생성할 때 클래스의 멤버 변수를 초기화 하거나 클래스를 사용하는 데 필요한 설정이 필요한 경우
  • 클래스 명과 동일한 메서드명을가지고 반환값이 없음

8. n이 10일 때, 10을 이진수로 변환하는 자바 소스 코드의 ①,②에 값을 작성

출력결과 : 00001010

class Soojebi {
  public static void main(String[] args) {
    int[] a = new int[8];   // 길이가 8인 int 배열 생성
    int i = 0;
    int n = 10;
    while(__①__) {      // i < 8까지 반복하도록 설정
      a[i++] = __②___;  // n % 2 
      n /= 2;  
    }
    for(i=7; i>=0; i--){ // 0부터 출력이 아닌 배열 끝에서부터 출력
      System.out.println(a[i]);
    }
  }
}

// ① i < 8 or n > 0 or n >= 1 or i <= 7
// ② n % 2 or n & 1

9. 자바 소스 코드의 출력 결과를 보고 ①,②에 값을 작성

출력결과

  • 1 4 7 10 13
  • 2 5 8 11 14
  • 3 6 9 12 15
class Soojebi {
  public static void main(String[] args) {
    int[][] a= new int[①][②];
    
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 5; j++) {
        a[i][j] = j * 3 + (i+1);
        System.out.print(a[i][j] + " ");
      }
      System.out.println();
    }
  }
}
// ① 3
// ② 5

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

class Parent {
  public int compute(int num){
    if(num <= 1) return num;
    return compute(num-1)+compute(num-2);
  }
}

class Child extends Parent {     // 상속
  public int compute(int num) {  // 오버라이딩
    if(num <= 1) return num;
    return compute(num-1)+compute(num-3); // 재귀
    // 0 + 1 최종 연산
    
    // 1. 4-1(다시 재귀) + 4-3 (1 리턴)
    // 2. 3-1(다시 재귀) + 3-3 (0 리턴)
    // 3. 2-1(1리턴) + 2-3 (-1리턴) = 2번의 3-1로 0을 리턴
    // 4. 0 + 0 을 1번의 4-1로 리턴,
    
  }
}
class Soojebi {
  public static void main(String[] args) {
     Parent obj = new Child();  // 조상 클래스 타입 변수로 자손 객체 생성
     System.out.print(obj.compute(4));  // 자손의 메서드가 실행됨
  }
}
// 1