2023년 정보처리기사 실기: Java 요약 – 1

2023년 정보처리기사 실기: Java 요약 – 1

안녕하세요! 2023년 정보처리기사 실기 시험을 준비하시는 분들을 위한 자료로, 중요한 Java 관련 예제 문제를 준비했습니다.
Java에 대한 내용은 정보처리기사 시험에서도 중요한 비중을 차지하고 있습니다.
해당 포스팅은 난이도가 쉬운 문제를 상세 풀이하는 게시글이며, 이 자료를 참고하시어 2023년 정보처리기사 실기 시험을 성공적으로 통과하시는 발판으로 삼으시길 바랍니다.
각 문제마다 자세한 해설 및 코드 예시도 함께 제공할 예정이니 시험 기간 동안 철저한 준비를 통해 좋은 성적을 거두실 수 있습니다!

목차

1. 소스 확인
2. 간략 소스 분석
3. 상세 소스 분석

Java 소스 확인

class Static{
    public int a = 20;
    static int b = 0;
}
 
public class Main{
    public static void main(String[] args) {
        
        int a;
        a = 10;
        Static.b = a;
 
        Static st = new Static();
 
        System.out.println(Static.b++);
        System.out.println(st.b);
        System.out.println(a);
        System.out.print(st.a);
    }
}

간략 소스 분석

class Static{
    public int a = 20; // 인스턴스 변수 'a'를 20으로 초기화

    static int b = 0; // 클래스 변수 'b'를 0으로 초기화
}
 
public class Main{
    public static void main(String[] args) {
        int a; // 지역 변수 'a'를 정의
        a = 10; // 지역 변수 'a'에 10 대입
        Static.b = a; // 클래스 변수 'b'에 지역 변수 'a'의 값을 대입
 
        Static st = new Static(); // Static 클래스의 인스턴스 생성
 
        System.out.println(Static.b++); // '10'을 출력하고, 'b'를 '11'로 증가
        System.out.println(st.b); // '11'을 출력 (static 변수는 인스턴스 변수와 공유되므로)
        System.out.println(a); // '10'을 출력
        System.out.print(st.a); // '20'을 출력 (인스턴스 변수 a)
    }
}

출력 값

상세 소스 분석

이 코드는 Java 언어로 작성된 예제 코드입니다. 클래스정적 변수 그리고 메소드의 사용법을 보여주는 간단한 코드입니다.

첫 번째 라인

class Static{

Static 이름을 지닌 클래스를 정의합니다.

클래스란 객체를 생성하기 위한 데이터 타입을 정의하는데 사용됩니다.

두 번째 라인

    public int a = 20;

Static 클래스에서 사용하는 내부 멤버 변수 중 하나인 a를 선언하고, int 타입의 숫자 20으로 초기화와 동시에 선언합니다. 접근 제어자가 public이므로 외부에서도 이 변수에 접근이 가능하게 합니다.

세 번째 라인

    static int b = 0;

Static 클래스의 정적 멤버 변수 b를 선언합니다.
변수의 접근 제어자는 static으로 선언하였기 때문에 new()를 이용하지 않아도 사용 가능한 변수이며, <클래스명>.<변수명>으로 접근이 가능합니다.

네 번째 라인

}

Static이라는 Class의 작업을 마무리하는 괄호 표시입니다.

다섯 번째 라인

public class Main{

Main Class를 정의합니다.
Main Class에 대해 간략하게 소개하자면, Java를 사용할 시 기본적으로 생성되는 클래스입니다.
Main Class는 프로그램의 시작점(entry point)이 되는 클래스입니다. 쉽게 말해, Java 프로그램에서 실행이 시작되는 지점을 가리키는 클래스입니다. Main Class는 일반 클래스처럼 다른 클래스에서도 사용될 수 있습니다.
Main Class 안에는 main 메서드가 무조건 존재해야합니다. 왜냐하면 Java가 컴퓨터에서 실행될 때 Main Class 안에 main 메서드를 실행하기 때문입니다.

여섯 번째 라인

    public static void main(String[] args) {

Main 클래스의 static 메소드인 main 메소드를 정의합니다. 프로그램의 시작점으로 JVM에 의해 실행됩니다. String[] args를 통해 외부로부터 인자를 받을 수 있습니다.

String[] args

String[] args에 대해 간략하게 설명하자면 main 메서드를 실행하기 전에 추가적인 값, 즉 매개변수를 입력할 수 있는데 해당 값들은 문자열 타입인 “String”으로 입력받는다는 의미입니다.
String 뒤에 “[]” 부분은 입력받은 매개변수를 배열로 저장한다는 의미이며, 그 말은 즉 입력받은 것이 없으면 0개의 값이고 한 개 이상의 값을 입력받았다면 해당 값들은 배열로 저장되게 됩니다.
“args”는 매개변수의 값을 입력받았을 때 저장하는 변수 명입니다.
만약 입력을 받게 될 경우 아래와 같이 처리할 수 있습니다.

public class Main{
     public static void main(String [] args){
        System.out.println(args[0]);
     }
}

일곱 번째 라인

        int a;

int형 변수인 a라는 이름으로 변수를 정의합니다.

여덟 번째 라인

        a = 10;

변수 a에 10을 대입합니다.

아홉 번째 라인

        Static.b = a;

Static 클래스의 정적 변수 b에 a의 값을 대입합니다.

열 번째 라인

        Static st = new Static();

위 코드는 Static 클래스의 인스턴스를 생성해서 st라는 변수에 할당하는 코드입니다.
클래스를 인스턴스화(instantiation)한다는 것은, 클래스의 정의를 실체화하여 메모리에 할당하는 것을 말합니다. 이 때 인스턴스는 클래스의 속성을 가지고 있으며, 클래스의 메서드를 실행할 수 있습니다.

열한번째 라인

        System.out.println(Static.b++);

Static 클래스의 정적 변수인 b를 출력합니다. 출력 전엔 후위증가 연산자를 이용하여 다음 라인으로 넘어갈 때, b의 값을 1 증가시킵니다.

열두번째 라인

        System.out.println(st.b);

객체 st의 멤버 변수인 b를 출력합니다.

열세번째 라인

        System.out.println(a);

변수 a를 출력합니다.

열네번째 라인

        System.out.print(st.a);

객체 st의 멤버 변수인 a를 출력합니다.
다른 변수를 출력할 때 사용한 println() 메소드가 아닌 print() 메소드는 줄바꿈을 하지 않습니다. println()과는 달리 출력 후 출력 커서가 같은 줄에 위치한 채로 남아있습니다.

마지막 라인

    }
}

Main이라는 Method의 작업을 마무리하고, Main이라는 Class의 작업을 마무리하는 괄호 표시입니다.