본문 바로가기
코딩 이야기/자바 코딩

JAVA 핵심 기본 문법 정리

by 안개소리 2026. 4. 9.

JAVA 핵심 기본 문법 정리

1. 자바의 구조와 'Hello, World!'

가장 먼저 자바 프로그램의 기본적인 구조를 이해하는 것부터 시작해 봅시다. 모든 자바 프로그램은 '클래스(Class)' 안에 정의되며, 그 안에 '메서드(Method)'라는 함수를 포함합니다. 프로그램의 실행은 항상 `main`이라는 이름의 특별한 메서드에서 시작됩니다.

// 이것은 클래스 선언입니다.
public class HelloWorld {
    // 이것은 프로그램의 시작점인 main 메서드입니다.
    public static void main(String[] args) {
        // 화면에 문자열을 출력하는 코드입니다.
        System.out.println("Hello, World!"); // 세미콜론(;)은 문장의 끝을 알립니다.
    }
}
  • 클래스(Class): 자바 프로그램의 기본 단위이며, 객체를 만들기 위한 청사진과 같습니다.
  • 메서드(Method): 특정한 기능을 수행하는 코드의 집합입니다.
  • 메인 메서드(main method): 자바 가상 머신(JVM)이 프로그램을 실행할 때 가장 먼저 호출하는 입구입니다.
  • 세미콜론(;): 자바는 모든 실행문의 끝에 세미콜론을 사용하여 문장을 구분합니다.

자바의 대소문자는 철저하게 구분되므로 Classclass는 완전히 다른 의미를 가집니다.


2. 변수와 자료형: 데이터 저장의 기초

프로그램은 데이터를 처리하기 위해 존재하며, 그 데이터를 임시로 저장하는 공간을 '변수(Variable)'라고 합니다. 자바는 강타입 언어(Strongly Typed Language)로, 변수를 선언할 때 어떤 종류의 데이터를 저장할지 '자료형(Data Type)'을 명시해야 합니다.

2.1. 기본 자료형 (Primitive Types)

자바가 제공하는 8가지 기본 자료형입니다. 이들은 값을 직접 저장합니다.

  • 정수형: byte (1 byte), short (2 bytes), int (4 bytes), long (8 bytes)
  • 실수형: float (4 bytes), double (8 bytes)
  • 문자형: char (2 bytes, 단일 문자, 'a')
  • 논리형: boolean (true/false)

자주 쓰이는 예시:

int age = 25; // 정수형 변수 age 선언 및 25로 초기화
double price = 10000.0; // 실수형 변수 price 선언
char grade = 'A'; // 문자형 변수 grade 선언
boolean isActive = true; // 논리형 변수 isActive 선언
long population = 7000000000L; // long형은 숫자 끝에 L을 붙입니다.
float temperature = 36.5f; // float형은 숫자 끝에 f를 붙입니다.

2.2. 참조 자료형 (Reference Types)

기본 자료형을 제외한 모든 유형입니다. 값이 직접 저장되는 것이 아니라, 데이터가 저장된 메모리의 주소(참조)를 저장합니다. 대표적으로 String (문자열)과 클래스, 배열 등이 있습니다.

String name = "Kim Java"; // String은 클래스이므로 참조 자료형입니다.

자바에서 변수를 사용할 때는 반드시 선언하고 초기화(최초의 값을 할당)해야 합니다.


3. 연산자: 데이터 가공의 핵심

데이터를 저장했으면 이를 가공하고 연산하는 과정이 필요합니다. 자바는 다양한 연산자를 제공합니다.

  • 산술 연산자: +, -, *, /, % (나머지)
  • 비교 연산자: ==, !=, >, <, >=, <= (결과는 boolean)
  • 논리 연산자: && (AND), || (OR), ! (NOT)
  • 대입 연산자: =, +=, -=, *=, /=
  • 증감 연산자: ++, --

연산자 활용 예시:

int x = 10;
int y = 3;

System.out.println(x + y); // 13
System.out.println(x / y); // 3 (정수 나눗셈은 정수 부분만 반환)
System.out.println(x % y); // 1

System.out.println(x > y); // true
System.out.println(x == 10 && y == 3); // true (둘 다 참이어야 참)

특히 단축 대입 연산자(+= 등)는 코드를 간결하게 만드는 데 유용하며, 전위/후위 증감 연산자(`++x`, `x++`)의 차이점을 이해하는 것도 중요합니다.


4. 제어문: 프로그램의 흐름을 지배하다 (조건문과 반복문)

제어문은 조건에 따라 코드의 실행 흐름을 바꾸거나 특정 코드를 반복해서 실행하게 합니다. 프로그래밍 논리의 핵심입니다.

4.1. 조건문

if-else 문: 조건식의 참/거짓에 따라 실행할 블록을 결정합니다.

int score = 85;

if (score >= 90) {
    System.out.println("A 학점입니다.");
} else if (score >= 80) {
    System.out.println("B 학점입니다.");
} else {
    System.out.println("C 학점 미만입니다.");
}

switch-case 문: 변수의 값이 특정 케이스와 일치할 때 실행됩니다. 최근 자바 버전에서는 식(expression) 형태로도 사용 가능합니다.

int day = 3;

switch (day) {
    case 1: System.out.println("월요일"); break;
    case 2: System.out.println("화요일"); break;
    case 3: System.out.println("수요일"); break;
    default: System.out.println("주말 또는 알 수 없음");
}

(`break` 문은 해당 케이스를 실행한 후 switch 문을 탈출하게 합니다.)

4.2. 반복문

for 문: 반복 횟수를 명확히 알 때 유용합니다.

// 1부터 5까지 출력
for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

향상된 for 문 (Enhanced for loop): 배열이나 컬렉션의 요소를 순회할 때 코드를 매우 간결하게 만듭니다.

String[] fruitArray = {"Apple", "Banana", "Cherry"};

// 각 요소 하나씩 출력
for (String fruit : fruitArray) {
    System.out.println(fruit);
}

while 문: 조건식이 참인 동안 계속 반복합니다. 반복 횟수가 유동적일 때 사용합니다.

int count = 0;
while (count < 3) {
    System.out.println("반복 중... " + count);
    count++;
}

제어문 내에서 `break`는 반복문을 즉시 탈출하고, `continue`는 현재 반복의 남은 코드를 건너뛰고 다음 반복으로 넘어갑니다.


5. 메서드: 코드의 재사용과 구조화

메서드는 반복되는 코드를 하나의 블록으로 묶어 이름을 붙인 것입니다. 이를 통해 코드의 가독성을 높이고, 유지보수를 쉽게 하며, 재사용성을 극대화할 수 있습니다.

// 메서드 정의: 반환타입 메서드명(매개변수...)
public int add(int a, int b) {
    int sum = a + b;
    return sum; // 결과를 반환
}

// 메서드 호출
HelloWorld hw = new HelloWorld(); // 클래스 객체 생성
int result = hw.add(5, 10); // add 메서드 호출
System.out.println("더한 결과: " + result); // 15
  • 매개변수(Parameter):** 메서드로 전달되는 입력값입니다.
  • 반환 타입(Return Type):** 메서드가 처리를 마치고 돌려주는 값의 자료형입니다. 반환값이 없으면 `void`를 사용합니다.

메서드는 특정 작업을 수행하는 완결된 하나의 단위를 정의하는 좋은 도구입니다.

자바 기본 문법에 대한 자주 묻는 질문 (FAQ)

Q1. 자바를 공부할 때 어떤 버전으로 시작해야 하나요?

최신 LTS(Long Term Support) 버전을 권장합니다. 안정적이고 오랫동안 지원을 받을 수 있기 때문입니다. 현재 기준으로 Java 17 또는 Java 21이 좋은 선택입니다.

Q2. `int`와 `Integer`의 차이점은 무엇인가요?

`int`는 기본 자료형으로 값을 직접 저장하고 메모리 효율적입니다. `Integer`는 `int`를 클래스로 감싼 참조 자료형(래퍼 클래스)으로, 객체로서 메서드를 제공하며 `null` 값을 저장할 수 있습니다. 컬렉션 프레임워크를 사용할 때 필수적입니다.

Q3. 메서드 정의에서 `static` 키워드는 언제 사용하나요?

`static`이 붙은 메서드는 객체를 생성하지 않고 클래스 이름만으로 직접 호출할 수 있습니다 (예: `Math.random()`). 유틸리티성 메서드나 애플리케이션의 시작점인 `main` 메서드 등에 사용됩니다. `static` 메서드 내에서는 클래스의 인스턴스 변수에 직접 접근할 수 없습니다.