Post

Java 언어 기초 - 01

Java의 특징, 객체지향 개념, 기본 프로그램 구조, 컴파일 과정, 변수와 자료형, 연산자, 조건문, 반복문까지 Java 기초 정리글

Java 언어 기초 - 01

Java의 특징

  • 객체 지향 언어: 캡슐화, 상속, 다형성 지원
  • JVM 위에서 실행 → 플랫폼 독립성 확보
  • 강타입 언어로 컴파일 시 타입 검사 엄격
  • 방대한 표준 라이브러리와 생태계 보유

Java 프로그램 구조 개요

  • 모든 코드는 클래스 내부에 작성
  • 실행 진입점: main 메서드
  • 메서드, 변수, 객체를 사용해 프로그램 구성

개발과 실행 흐름

  1. .java 파일에 코드 작성
  2. javac 컴파일 → .class 바이트코드 생성
  3. JVM이 바이트코드 실행

Java의 장점

  • “Write Once, Run Anywhere” → 플랫폼 독립성
  • 풍부한 표준 라이브러리 제공
  • 멀티스레딩, 네트워크 지원
  • 강력한 보안과 안정성

객체 지향 프로그래밍(OOP)

핵심 개념

  • 캡슐화: 데이터와 메서드를 객체로 묶음
  • 상속: 기존 클래스를 확장해 새로운 기능 추가
  • 다형성: 같은 인터페이스로 다른 동작 수행
  • 추상화: 세부 정보 숨기고 핵심 기능만 표현

객체와 클래스

  • 클래스: 객체를 생성하기 위한 설계도
  • 객체: 클래스로부터 만들어진 실체(인스턴스)
1
2
3
4
5
6
7
8
9
10
11
class Animal {
    String name;

    void sound() {
        System.out.println("동물 소리");
    }
}

Animal dog = new Animal();
dog.name = "강아지";
dog.sound();

상속

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Parent {
    void hello() {
        System.out.println("Hello from Parent");
    }
}

class Child extends Parent {
    void hello() {
        System.out.println("Hello from Child");
    }
}

Child c = new Child();
c.hello();

다형성

1
2
Parent obj = new Child();
obj.hello(); // Child의 hello()가 실행됨

추상 클래스와 인터페이스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
abstract class Shape {
    abstract void draw();
}

class Circle extends Shape {
    void draw() {
        System.out.println("원을 그립니다");
    }
}

interface Movable {
    void move();
}

class Car implements Movable {
    public void move() {
        System.out.println("차가 움직입니다");
    }
}

객체 지향의 장점

  • 코드 재사용성 증가
  • 유지보수성 향상
  • 프로그램 확장성 강화
  • 현실 세계 모델링에 유리

객체 지향 vs 절차 지향

구분절차 지향객체 지향
설계 중심함수와 절차 중심객체와 클래스 중심
데이터 처리데이터와 함수 분리데이터와 메서드를 객체로 묶음
재사용성낮음높음
유지보수복잡함용이함
예시 언어CJava, C++ 등

Java 기본 프로그램 구조

프로그램 구성 요소

  • 클래스 내부에 코드 작성
  • main 메서드가 실행 시작점
1
2
3
4
5
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

실행 흐름

  1. .java 작성
  2. javac 컴파일 → .class 생성
  3. JVM이 실행

컴파일 과정

단계별 흐름

  1. 소스 코드 작성 → .java
  2. javac 컴파일 → .class 바이트코드
  3. 클래스 로딩 → JVM 메모리에 적재
  4. 바이트코드 검증 → 안전성 검사
  5. JVM이 인터프리트/JIT 컴파일 → 실행

특징

  • 플랫폼 독립적 바이트코드 생성
  • JVM이 다양한 OS에서 동일 실행 환경 제공
  • JIT 컴파일로 성능 최적화

Java 변수와 자료형

변수 선언

1
2
3
4
int number = 10;
double pi = 3.14;
char grade = 'A';
boolean isActive = true;

기본 자료형

  • 정수형: byte, short, int, long
  • 실수형: float, double
  • 문자형: char
  • 논리형: boolean

참조 자료형

1
2
String name = "Java";
int[] scores = {90, 80, 70};
  • 객체, 배열, 인터페이스, 열거형 등
  • null 값 가능

형변환

  • 자동(묵시적): 작은 → 큰 타입
  • 강제(명시적): 큰 → 작은 타입
1
2
double d = 3.14;
int i = (int) d; // 3

Java 연산자

산술 연산자

1
2
3
4
int a = 10;
int b = 3;
System.out.println(a + b); // 13
System.out.println(a % b); // 1

비교 연산자

1
2
int num = 5;
System.out.println(num == 5); // true

논리 연산자

1
boolean result = (5 > 3) && (10 > 5); // true

조건(삼항) 연산자

1
2
int score = 85;
String grade = (score >= 90) ? "A" : "B";

비트 연산자

1
2
3
int n = 5; // 0101
int m = 3; // 0011
System.out.println(n & m); // 1 (0001)

Java 조건문

if 문

1
2
3
4
5
6
7
8
int num = 10;
if (num > 0) {
    System.out.println("양수입니다.");
} else if (num == 0) {
    System.out.println("0입니다.");
} else {
    System.out.println("음수입니다.");
}

switch 문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
}

Java 반복문

for 문

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

while 문

1
2
3
4
5
int count = 3;
while (count > 0) {
    System.out.println(count);
    count--;
}

do-while 문

1
2
3
4
5
int num = 0;
do {
    System.out.println(num);
    num++;
} while (num < 3);

특징 정리

  • for: 반복 횟수 명확할 때 사용
  • while: 조건이 참이면 반복
  • do-while: 최소 1회 실행 보장
This post is licensed under CC BY 4.0 by the author.