Day 24 - Structure : Java

haxxru log;·2026년 4월 3일
post-thumbnail

이 글은 2026년 04월 03일 작성된 글입니다.

자바 기초 핵심 개념을 간단히 정리했다.
증감 연산자, 반복문, 메모리 구조, 객체와 클래스, 컬렉션, static, 상속까지
자바의 기본 동작 원리를 이해하는 내용이다.


1. 증감 연산자

변수 값을 증가 또는 감소시킬 때 사용한다.

i++;   // 1 증가
i--;   // 1 감소

i = i + 2;
i += 2;

i = i - 2;
i -= 2;

후위 연산자

값을 먼저 사용하고 증가한다.

int i = 10;

System.out.println(i++); // 10
System.out.println(i);   // 11

전위 연산자

값을 먼저 증가시키고 사용한다.

int i = 10;

System.out.println(++i); // 11
System.out.println(i);   // 11

2. while 반복문

조건이 참인 동안 반복 실행된다.

int i = 0;

while (i <= 10) {
    System.out.println(i);
    i++;
}

3. 기본 자료형 8종

구분 타입


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

boolean b = true;
char c = 'a';

int i = 3;
long l = 4L;

float f = 5.5f;
double d = 5.5;

4. 메모리 구조

자바 메모리는 크게 스택(Stack)과 힙(Heap)으로 나뉜다.

지역 변수

  • 스택에 저장
  • 함수 종료 시 자동 삭제

객체

  • 힙에 저장
  • 참조가 없어지면 GC에 의해 삭제
int a = 10;        // 스택
String name = "Paul"; // 객체는 힙, 변수는 스택

5. 기본형 vs 참조형

구분 특징


기본형 값이 직접 저장
참조형 객체 주소 저장

int a = 10;
String name = "Paul";

참조형 변수에는 객체의 주소(참조)가 저장된다.


6. 함수와 매개변수

public static void plus(int num1, int num2) {
    System.out.println(num1 + num2);
}

리턴

public static int plus(int num1, int num2) {
    return num1 + num2;
}

7. 컴파일 타임 vs 런타임

구분 의미


컴파일 타임 실행 전 코드 검사
런타임 프로그램 실행 중


8. 함수 호출과 스택

함수 A가 함수 B를 호출하면 B의 스택이 생성되고 B가 끝나면 해당 스택이
제거된다.


9. 객체 생성

new 키워드는 객체를 힙에 생성한다.

String name = new String("홍길동");

int[] arr = new int[] {10, 20, 30};

10. 객체 참조

int[] arr1 = new int[] {10,20,30};
int[] arr2 = arr1;

객체가 2개가 되는 것이 아니라 참조가 2개가 된다.


11. 메모리 해제

지역 변수

함수 종료 시 삭제

객체

참조하는 변수가 없어지면 GC가 제거

arr1 = null;

12. 객체

객체는 여러 데이터를 하나로 묶는 구조이다.


13. 인스턴스 변수

객체 내부에 선언된 변수.

int[] person = new int[3];

person[0] = 1;
person[1] = 20;
person[2] = 170;

14. 클래스

객체를 만들기 위한 설계도.

class GameCharacter {
    int no;
    int age;
    int height;
}
GameCharacter p1 = new GameCharacter();
p1.age = 20;

15. this

객체 자기 자신을 가리키는 참조.

this.age

new는 객체 생성 후 this 참조를 반환한다.


16. Wrapper Class

기본형 타입을 객체 형태로 만든 클래스.

기본형 래퍼


int Integer
double Double
boolean Boolean


17. 배열 vs 리스트

구분 특징


배열 크기 고정
리스트 크기 변경 가능

List<Integer> list = new ArrayList<>();

list.add(10);
list.add(20);

System.out.println(list.size());

18. List vs Map

List

데이터 넣기 편함

List<Integer> ages = new ArrayList<>();
ages.add(10);
ages.add(20);

Map

데이터 찾기 편함

Map<String, Integer> ages = new HashMap<>();

ages.put("철수",10);
ages.get("철수");

19. static

static 변수는 클래스에 속한다.

class Person {
    static int maxSpeed;
}
Person.maxSpeed = 100;

특징

  • 클래스에 1개만 존재
  • 모든 객체가 공유

20. 객체와 참조

객체는 참조 변수로 조종한다.

자동차 a자동차 = new 자동차();

a자동차.달리다();

21. 상속

중복 코드를 줄이기 위해 사용한다.

class 고양이 {
    void 숨쉬다() {
        System.out.println("숨쉬다");
    }
}

class 검은고양이 extends 고양이 {
}
검은고양이 cat = new 검은고양이();
cat.숨쉬다();

✅ 정리

  • 증감 연산자는 변수 값을 증가 또는 감소시킨다.
  • 자바 메모리는 스택(지역 변수)과 힙(객체)으로 구성된다.
  • 기본형은 값을 직접 저장하고 참조형은 객체 주소를 저장한다.
  • 클래스는 객체의 설계도이며 new로 객체를 생성한다.
  • 배열은 크기가 고정이고 리스트는 가변이다.
  • static 변수는 클래스에서 하나만 존재하며 모든 객체가 공유한다.
  • 상속을 사용하면 코드 중복을 줄일 수 있다.

0개의 댓글