본문 바로가기
정보처리산업기사

정보처리산업기사 실기 Java 문법 정리

by Hwangminseo 2026. 4. 7.

1. 자바 프로그램의 기본 구조

자바 프로그램은 클래스 단위로 작성한다.

예시

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

핵심 개념

  • 클래스명과 파일명은 보통 같아야 한다.
  • main() 메서드가 프로그램 시작점이다.
  • System.out.println()은 출력이다.
  • ; 세미콜론으로 문장을 끝낸다.

시험 포인트

  • main 메서드 형식을 자주 물음
  • 클래스, 메서드, 출력문 구조를 구분해야 함

2. 변수와 자료형

변수는 값을 저장하는 공간이다.

기본 자료형

  • int : 정수
  • double : 실수
  • char : 문자 1개
  • boolean : 참/거짓

참조 자료형

  • 배열
  • 클래스
  • 문자열(String)

예시

int a = 10;
double b = 3.14;
char c = 'A';
boolean d = true;
String e = "Java";

핵심 개념

  • 문자 하나는 ' ' 사용
  • 문자열은 " " 사용
  • 기본형은 값 자체 저장
  • 참조형은 주소 개념으로 접근

시험 포인트

  • charString 구분
  • 기본형과 참조형 구분

3. 연산자

산술 연산자

  • + : 더하기
  • - : 빼기
  • * : 곱하기
  • / : 나누기
  • % : 나머지

증감 연산자

  • ++ : 1 증가
  • -- : 1 감소

비교 연산자

  • ==, !=, >, <, >=, <=

논리 연산자

  • && : AND
  • || : OR
  • ! : NOT

핵심 개념

  • a++ : 후위 증가, 먼저 사용 후 증가
  • ++a : 전위 증가, 먼저 증가 후 사용

예시

int a = 5;
System.out.println(a++); // 5
System.out.println(a);   // 6

시험 포인트

  • 전위/후위 증가 결과
  • 정수 나눗셈 결과
    • 5 / 22
  • 문자열과 숫자 결합
    • "A" + 1"A1"

4. 조건문

if문

조건이 참일 때 실행한다.

if (x > 0) {
    System.out.println("양수");
}

if ~ else

참/거짓에 따라 실행이 나뉜다.

if (x % 2 == 0) {
    System.out.println("짝수");
} else {
    System.out.println("홀수");
}

switch문

여러 경우 중 하나를 선택한다.

switch (n) {
    case 1:
        System.out.println("하나");
        break;
    case 2:
        System.out.println("둘");
        break;
    default:
        System.out.println("기타");
}

핵심 개념

  • switch에서는 break 없으면 아래 case까지 계속 실행될 수 있다.
  • default는 모든 case에 해당하지 않을 때 실행

시험 포인트

  • break 빠졌을 때 결과
  • 조건문의 실행 순서

5. 반복문

for문

횟수가 정해진 반복에 주로 사용

for (int i = 0; i < 3; i++) {
    System.out.println(i);
}

while문

조건이 참인 동안 반복

int i = 0;
while (i < 3) {
    System.out.println(i);
    i++;
}

do-while문

무조건 한 번은 실행

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

핵심 개념

  • for : 초기식, 조건식, 증감식
  • while : 조건 먼저 검사
  • do-while : 실행 후 조건 검사

시험 포인트

  • 반복 횟수 계산
  • 중첩 반복문 결과
  • break, continue 차이

6. 배열

배열은 같은 자료형 여러 개를 하나로 묶은 것이다.

int[] arr = {10, 20, 30};
System.out.println(arr[0]); // 10

핵심 개념

  • 인덱스는 0부터 시작
  • 배열 길이는 length
  • 자바 배열은 참조형이다

예시

int[] arr = new int[3];
System.out.println(arr.length); // 3

시험 포인트

  • 인덱스 범위
  • arr.length는 필드이고 length() 아님
  • 배열을 메서드에 넘기면 참조가 전달되므로 원본 요소 변경 가능

7. 메서드

메서드는 특정 기능을 수행하는 코드 묶음이다.

static int add(int a, int b) {
    return a + b;
}

구성 요소

  • 반환형
  • 메서드명
  • 매개변수
  • return문

핵심 개념

  • void는 반환값 없음
  • return은 값을 돌려주고 메서드 종료
  • 매개변수는 호출 시 값을 전달받음

시험 포인트

  • 반환형과 실제 반환값 일치 여부
  • 메서드 호출 순서
  • static 메서드와 일반 메서드 구분

8. 클래스와 객체

클래스

객체를 만들기 위한 설계도

객체

클래스를 바탕으로 생성된 실제 데이터

class Person {
    String name;
    int age;
}
Person p = new Person();
p.name = "Kim";
p.age = 20;

핵심 개념

  • 클래스 안에는 변수(필드)와 메서드가 들어갈 수 있다.
  • new로 객체 생성
  • 객체 접근은 . 사용

시험 포인트

  • 클래스와 객체 차이
  • 객체 생성 문법
  • 필드값 변경과 메서드 호출

9. 생성자

생성자는 객체가 만들어질 때 자동 호출되는 특별한 메서드다.

class Person {
    String name;

    Person() {
        name = "홍길동";
    }
}

핵심 개념

  • 생성자 이름은 클래스명과 같음
  • 반환형을 쓰지 않음
  • 객체 생성 시 자동 호출
  • 생성자를 안 만들면 기본 생성자가 자동 제공될 수 있음

시험 포인트

  • 생성자 호출 시점
  • 생성자 오버로딩
  • 부모/자식 생성자 실행 순서

10. 오버로딩과 오버라이딩

오버로딩

같은 이름의 메서드를 매개변수 다르게 여러 개 정의

int add(int a, int b) { return a + b; }
int add(int a, int b, int c) { return a + b + c; }

오버라이딩

상속 관계에서 부모 메서드를 자식이 다시 정의

class A {
    void print() {
        System.out.println("A");
    }
}

class B extends A {
    void print() {
        System.out.println("B");
    }
}

핵심 개념

  • 오버로딩: 이름 같음, 매개변수 다름
  • 오버라이딩: 상속 관계, 내용 재정의

시험 포인트

  • 둘의 차이 구분
  • 실행 결과에서 어떤 메서드가 호출되는지 판단

11. 상속

상속은 기존 클래스를 물려받아 새로운 클래스를 만드는 것이다.

class A {
    int x = 10;
}

class B extends A {
    int y = 20;
}

핵심 개념

  • extends 사용
  • 자식 클래스는 부모의 멤버를 물려받음
  • 코드 재사용 가능

시험 포인트

  • 부모 → 자식 관계
  • 생성자 호출 순서
  • 상속받은 필드/메서드 사용 가능 여부

12. 다형성

부모 타입으로 자식 객체를 참조할 수 있다.

A obj = new B();

핵심 개념

  • 참조 변수 타입은 A
  • 실제 객체 타입은 B
  • 인스턴스 메서드는 실제 객체 기준
  • 정적 메서드는 참조 변수 타입 기준

이 부분이 시험에 매우 잘 나온다.

예시

class A {
    static String nu() { return "A"; }
    String mo() { return "a"; }
}

class B extends A {
    static String nu() { return "B"; }
    String mo() { return "b"; }
}

A obj = new B();
System.out.println(obj.nu() + obj.mo());

결과

  • obj.nu() → A
  • obj.mo() → b
  • 최종 결과는 Ab

시험 포인트

  • 정적 메서드와 인스턴스 메서드 호출 기준 차이
  • 다형성 문제 결과

13. static

static은 클래스에 속하는 멤버다.

class Test {
    static int x = 10;
}

핵심 개념

  • 객체마다 따로 생기는 것이 아니라 클래스 전체가 공유
  • 클래스명.변수명 형태로 접근 가능
  • static 메서드 안에서는 일반 인스턴스 변수 직접 사용 불가

static 초기화 순서

  • static 변수 초기화
  • static 블록 실행
  • main 실행

예시

class Test {
    static int x = f();

    static int f() {
        System.out.print("A");
        return 1;
    }

    static {
        x++;
    }

    public static void main(String[] args) {
        System.out.print(x);
    }
}

결과는 A2

시험 포인트

  • static 변수와 static 블록 실행 순서
  • static 멤버의 공유 개념

14. this와 super

this

현재 객체 자신을 가리킨다.

this.name = name;

super

부모 클래스 멤버를 가리킨다.

super.print();

핵심 개념

  • this() : 같은 클래스의 다른 생성자 호출
  • super() : 부모 생성자 호출
  • 생성자 첫 줄에서 자주 사용

시험 포인트

  • thissuper 차이
  • 부모 생성자 호출 여부

15. 접근 제어자

  • public : 어디서나 접근 가능
  • private : 같은 클래스 내부에서만 접근 가능
  • protected : 상속 관계나 같은 패키지에서 접근 가능
  • default : 같은 패키지에서만 접근 가능

핵심 개념

  • 보안과 캡슐화 관련
  • 시험에서는 주로 privatepublic 구분 위주

16. 예외 처리

예외는 프로그램 실행 중 발생하는 오류 상황이다.

try-catch-finally

try {
    int a = 10 / 0;
} catch (Exception e) {
    System.out.println("오류");
} finally {
    System.out.println("항상 실행");
}

핵심 개념

  • try : 예외 발생 가능 코드
  • catch : 예외 처리
  • finally : 예외 발생 여부와 상관없이 실행

중요한 시험 포인트

  • try 안에 return이 있어도 finally는 실행된다.
  • 단, finally에서 반환값을 다시 바꾸지 않으면 원래 return 값은 유지된다.

17. 문자열

문자열은 String 클래스 사용

String s = "Java";

자주 쓰는 것

  • length() : 길이
  • charAt(i) : i번째 문자
  • equals() : 문자열 비교

핵심 개념

  • 문자열 비교는 ==보다 equals()를 쓰는 것이 원칙
  • +로 문자열 연결 가능

시험 포인트

  • "A" + 1 결과
  • 문자열 길이/문자 추출
  • ==equals() 차이