
이 글은 2026년 04월 03일 작성된 글입니다.
자바 기초 핵심 개념을 간단히 정리했다.
증감 연산자, 반복문, 메모리 구조, 객체와 클래스, 컬렉션, static, 상속까지
자바의 기본 동작 원리를 이해하는 내용이다.
변수 값을 증가 또는 감소시킬 때 사용한다.
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
조건이 참인 동안 반복 실행된다.
int i = 0;
while (i <= 10) {
System.out.println(i);
i++;
}
구분 타입
논리 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;
자바 메모리는 크게 스택(Stack)과 힙(Heap)으로 나뉜다.
int a = 10; // 스택
String name = "Paul"; // 객체는 힙, 변수는 스택
구분 특징
기본형 값이 직접 저장
참조형 객체 주소 저장
int a = 10;
String name = "Paul";
참조형 변수에는 객체의 주소(참조)가 저장된다.
public static void plus(int num1, int num2) {
System.out.println(num1 + num2);
}
public static int plus(int num1, int num2) {
return num1 + num2;
}
구분 의미
컴파일 타임 실행 전 코드 검사
런타임 프로그램 실행 중
함수 A가 함수 B를 호출하면 B의 스택이 생성되고 B가 끝나면 해당 스택이
제거된다.
new 키워드는 객체를 힙에 생성한다.
String name = new String("홍길동");
int[] arr = new int[] {10, 20, 30};
int[] arr1 = new int[] {10,20,30};
int[] arr2 = arr1;
객체가 2개가 되는 것이 아니라 참조가 2개가 된다.
함수 종료 시 삭제
참조하는 변수가 없어지면 GC가 제거
arr1 = null;
객체는 여러 데이터를 하나로 묶는 구조이다.
객체 내부에 선언된 변수.
int[] person = new int[3];
person[0] = 1;
person[1] = 20;
person[2] = 170;
객체를 만들기 위한 설계도.
class GameCharacter {
int no;
int age;
int height;
}
GameCharacter p1 = new GameCharacter();
p1.age = 20;
객체 자기 자신을 가리키는 참조.
this.age
new는 객체 생성 후 this 참조를 반환한다.
기본형 타입을 객체 형태로 만든 클래스.
기본형 래퍼
int Integer
double Double
boolean Boolean
구분 특징
배열 크기 고정
리스트 크기 변경 가능
List<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
System.out.println(list.size());
데이터 넣기 편함
List<Integer> ages = new ArrayList<>();
ages.add(10);
ages.add(20);
데이터 찾기 편함
Map<String, Integer> ages = new HashMap<>();
ages.put("철수",10);
ages.get("철수");
static 변수는 클래스에 속한다.
class Person {
static int maxSpeed;
}
Person.maxSpeed = 100;
특징
객체는 참조 변수로 조종한다.
자동차 a자동차 = new 자동차();
a자동차.달리다();
중복 코드를 줄이기 위해 사용한다.
class 고양이 {
void 숨쉬다() {
System.out.println("숨쉬다");
}
}
class 검은고양이 extends 고양이 {
}
검은고양이 cat = new 검은고양이();
cat.숨쉬다();