Frinee의 코드저장소

자바 기본 구조와 기본 문법

by Frinee

1. 자바의 기본 구조

자바 프로그램은 클래스(Class)와 메서드(Method)로 구성된다.

Java는 객체지향 언어로, 프로그램 실행 단위는 클래스에서 시작하여 모든 실행은 main 메서드에서 이루어진다.

// 클래스 선언
public class Main {
    // main 메서드: 프로그램의 시작점
    public static void main(String[] args) {
        // 실행할 코드
        System.out.println("Hello, Java!"); // 콘솔에 출력
    }
}

구성 요소

  1. 클래스(Class)
    • 자바 프로그램의 기본 단위, 코드와 데이터를 캡슐화함.
    • public class Main : 클래스 이름은 파일 이름과 동일해야 함.
    • 클래스는 서로 다른 데이터와 기능을 담아 코드 재사용성을 높이고, 객체지향적 설계를 가능하게 함.
  2. main 메서드
    • 자바 프로그램의 시작점으로 반드시 public static void main(String[] args) 형태
      • public: 모든 곳에서 접근할 수 있음을 의미함.
      • static: 객체를 생성하지 않고도 메서드를 실행할 수 있도록 함. 이는 자바 실행 시 JVM이 직접 호출하기 위해 필요합니다.
      • void: 반환값이 없음
      • String[] args: 프로그램 실행 시 전달되는 입력값을 저장하는 매개변

설계 이유

  • JVM과의 연동: main 메서드는 JVM이 프로그램을 실행할 때 가장 먼저 호출하는 진입점으로 설계
  • 단순성과 유연성: static 키워드를 사용함으로써 객체 생성 없이 프로그램을 시작할 수 있음

 

2. 변수와 자료형

변수는 데이터를 저장하기 위한 공간이며, 자바에서는 변수 선언 시 반드시 자료형을 명시해야 함.

자료형 분류

  1. 기본형(Primitive Types)
    • 데이터 자체를 저장하는 형태로 메모리 사용이 효율적이고 빠름
    • 종류
      자료형 의미 메모리 사이즈 범위 기본값
      byte 8-bit 정수 1 byte -2⁷ ~ 2⁷-1 0
      short 16-bit 정수 2 bytes -2¹⁵ ~ 2¹⁵-1 0
      int 32-bit 정수 4 bytes -2³¹ ~ 2³¹-1 0
      long 64-bit 정수 8 bytes -2⁶³ ~ 2⁶³-1 0L
      float 32-bit 부동소수점(IEEE 754) 4 bytes -3.40E+38 ~ 3.40E+38 0.0f
      double 64-bit 부동소수점(IEEE 754) 8 bytes 1.79E+308 ~ 1.79E+308 0.0d
      char 16-bit 유니코드 문자 2 bytes 0 ~ 2¹⁶-1 \u0000
      boolean 논리형 1 bit 0 or 1 0 (false)
  2. 참조형(Reference Types)
    • 객체의 주소값을 저장하며 복잡한 데이터를 다룰 때 사용
    • 종류
      • Object: 모든 Class와 Enum의 일반화된 타입
      • String: char의 배열로 구현된 참조 자료형
      • Array: 동일한 타입의 데이터를 순차적으로 저장하는 객체
      • Class: Class 객체 자체를 다루는 자료형
      • Wrapper: 기본 데이터 타입의 값을 객체로 다루기 위한 클래스
      • Interface: 객체가 구현해야 하는 메소드의 집합을 정의한 타입
      • Enum 고정된 상수들의 집합을 정의하는 특별한 종류의 클래스
      • 그 외에도 많은 참조형 타입들이 존재함
구분 기본형 참조형
저장 방식 값 자체를 저장 메모리 주소를 저장
메모리 사용 스택(Stack) 힙(Heap)
데이터 크기 고정 (자료형별로 정해짐) 가변 (객체 크기에 따라 다름)
주요 예시 int, double, char, boolean String, 배열, 사용자 정의 클래스

 

public class VariablesExample {
    public static void main(String[] args) {
        int age = 25; // 정수형 변수
        double height = 175.5; // 실수형 변수
        char grade = 'A'; // 문자형 변수
        String name = "Alice"; // 문자열 변수
        boolean isStudent = true; // 논리형 변수

        // 출력
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Height: " + height);
        System.out.println("Grade: " + grade);
        System.out.println("Is student? " + isStudent);
    }
}

 

3. 연산자

연산자는 변수나 값을 조작하거나 비교하는 데 사용

연산자의 종류와 의미

연산자 유형 연산자 설명 예시
산술 연산자 +, -, \*, /, % 숫자 간의 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지를 구함 a + b, a % b
증감 연산자 ++, -- 1씩 증가 또는 감소. 접두사와 접미사로 사용 가능. ++a, b--
대입 연산자 \= 오른쪽 값을 왼쪽 변수에 대입. a = 10
복합 대입 연산자 +=, -=, \*=, /=, %= 대입과 동시에 산술 연산 수행. a += 5
비교 연산자 \==, !=, <, >, <=, >= 값의 동등성, 크기 비교를 수행. a == b, a > b
논리 연산자 &&, ||, ! 논리적 조건을 결합하거나 부정 a && b, !a
비트 연산자 &, |, ^, ~, <<, >>, >>> 비트 단위의 연산 수행 a & b, a << 1
삼항 연산자 ? : 조건에 따라 값을 선택. a > b ? a : b
instanceof 연산자 instanceof 객체가 특정 클래스의 인스턴스인지 확인. obj instanceof String
문자열 연결 연산자 + 문자열을 이어 붙임. "Hello" + name
String name = "Alice";
if (name instanceof String) {
    System.out.println("name은 String입니다.");
}

String greeting = "Hello, " + "World!";

 

4. 조건문과 반복문

4.1. 조건문

if 문

조건식이 참인 경우 명령문을 실행

if (조건식) {
    // 조건이 참일 때 실행할 코드
}

int score = 85;
if (score >= 90) {
    System.out.println("Grade: A");
}

if-else 문

조건식이 참인 경우 if 문 실행, 거짓인 경우 else 문 실행

if (조건식) {
    // 조건이 참일 때 실행할 코드
} else {
    // 조건이 거짓일 때 실행할 코드
}

if (score >= 90) {
    System.out.println("Grade: A");
} else {
    System.out.println("Grade: B or lower");
}

switch 문

  • 변수의 값에 따라 여러 실행 경로 중 하나를 선택
switch (변수) {
    case 값1:
        // 값1일 때 실행할 코드
        break;
    case 값2:
        // 값2일 때 실행할 코드
        break;
    default:
        // 일치하는 값이 없을 때 실행할 코드
}

int day = 3;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    case 3:
        System.out.println("Wednesday");
        break;
    default:
        System.out.println("Other Day");
}

 

4.2. 반복문

for 문

고정된 횟수만큼 반복하여 실행

for (초기화; 조건식; 증감식) {
    // 반복할 코드
}

for (int i = 1; i <= 5; i++) {
    System.out.println("Count: " + i);
}
  • 초기화: 반복 변수 초기값 설정
  • 조건식: 반복을 계속할 조건
  • 증감식: 반복 변수값을 변경

while 문

조건식이 true인 경우 계속해서 반복하여 실행

while (조건식) {
    // 반복할 코드
}

int count = 5;
while (count > 0) {
    System.out.println("Countdown: " + count);
    count--;
}

do - while 문

조건문과 반복문을 결합한 구조로 코드를 최소 한 번은 실행한 후 조건을 검사하여 반복을 결정

do {
    // 실행할 코드
} while (조건식);
  • do 블록: 조건과 관계없이 한 번은 반드시 실행되는 코드 블록
  • while (조건식): 코드 블록을 반복할 조건을 검사함. 조건이 참이면 do 블록을 다시 실행하고, 거짓인 경우 반복을 종료
public class DoWhileExample {
    public static void main(String[] args) {
        int number = 0;

        do {
            System.out.println("Current number: " + number);
            number++;
        } while (number < 3);
    }
}

Current number: 0
Current number: 1
Current number: 2

do-while 문 vs while

특성 do-while 문 while 문
코드 실행 순서 코드를 먼저 실행한 후 조건 확인 조건을 먼저 확인한 후 코드 실행
최소 실행 횟수 최소 한 번은 코드가 실행됨 조건이 거짓이면 한 번도 실행되지 않을 수 있음
사용 예시 사용자 입력 처리, 값 확인 등 조건이 참일 때 반복을 시작해야 할 경우

블로그의 정보

프리니의 코드저장소

Frinee

활동하기