Java의 신 Day 1 정리
"자바의 신"은 겉보기엔 초급자를 위한 입문서처럼 보이지만, 입문을 넘어서 기초를 다지는 데 매우 좋은 책이라는 얘기를 자주 들어왔습니다. 개인적으로는 과거에 가볍게 넘겼던 내용이나 애매하게 알고 있던 기초 개념들을 제대로 다시 잡고 싶어서 이 책을 읽어보기로 결심했습니다.
특히, 이미 알고 있다고 생각했지만 사실은 불분명하게 알고 있었던 부분들 다시 돌아보는 데 이 책이 굉장히 도움이 될거 같습니다.
저처럼 "자바를 사용하고 있지만 개념이 명확하지 않다"거나, "기초를 다시 다지고 싶은 분들"에게도 이 정리글이 도움이 되길 바랍니다.
✅ 1. 자바 GUI 프로그래밍이란?
- GUI (Graphical User Interface): 그래픽 기반의 사용자 인터페이스 (버튼, 텍스트박스 등)
- 자바에서 GUI를 만들 수 있는 도구:
- AWT (Abstract Window Toolkit): 운영체제에 의존적이고 무거움
- Swing: 자바로 직접 그려주는 방식, AWT보다 가볍고 유연함
- JavaFX: 최신 기술, 멀티미디어까지 지원하지만 요즘은 많이 쓰이지 않음
- 예시 (Swing):
JFrame frame = new JFrame("타이틀");
frame.setSize(300, 200);
frame.setVisible(true);
- 필자가 말한 요지는: 자바를 콘솔로만 배우지 말고 GUI도 만들어 보자는 뜻.
✅ 2. 자바 변수 4가지 종류 정리 (핵심)
구분 선언 위치 메모리 영역 수명 특징
| 지역 변수 | 메서드/블록 내부 | Stack | 블록 끝나면 소멸 | 초기화 안하면 에러 |
| 매개 변수 | 메서드 선언부 | Stack | 메서드 실행 중 | 메서드 인자 역할 |
| 인스턴스 변수 | 클래스 내부, static 없음 | Heap | 객체 참조되는 동안 | 객체마다 별도 존재 |
| 클래스 변수 | 클래스 내부, static 있음 | Method Area | 프로그램 종료까지 | 모든 인스턴스가 공유 |
✅ 3. 인스턴스 변수 vs 클래스 변수 정리 (헷갈린 부분)
🔹 오해했던 부분:
"클래스 내부에 있으니까 클래스 변수 아닌가?"
- 클래스 변수는 반드시 static 키워드가 붙은 변수
- static이 없으면 인스턴스를 생성할 때마다 Heap에 따로 생성되는 변수 → 인스턴스 변수
🔹 예시:
public class Person {
String name; // 인스턴스 변수 (Heap)
static int count = 0; // 클래스 변수 (Method Area)
}
- count: 모든 객체가 공유하는 변수
- name: 객체마다 별도 보유하는 변수
✅ 4. 메모리 구조와 변수의 생명주기
┌────────────┐
│ Method Area│ ← static 변수 (클래스 변수)
└────────────┘
↓
┌────────────┐
│ Heap │ ← 인스턴스 변수 (객체마다 다름)
└────────────┘
↓
┌────────────┐
│ Stack │ ← 지역 변수, 매개변수
└────────────┘
- 인스턴스 변수는 Heap에 존재하며 객체가 참조되는 동안 살아있음
- 참조가 사라지면 GC(Garbage Collector)가 제거함
- 클래스 변수는 클래스 로딩 시 Method Area에 올라가고 종료 전까지 유지
- 지역/매개 변수는 메서드 호출 시 Stack에 올라가고, 종료 시 사라짐
✅ 기타 팁
🔸 파일 이름과 클래스 이름이 다르면?
// 파일명: Hello.java
public class Hello {} // ✅
// 파일명: test2.java
public class Hello {} // ❌ 오류 발생 (이름 불일치)
🔸 java 실행 시 클래스 못 찾는 경우
java -cp . ClassName
-cp .은 "현재 디렉토리를 클래스 경로로 지정"하는 뜻
✍️ 마무리
자바는 단순 문법 외에도 메모리 구조, 객체 생명주기, 클래스 로딩 방식을 이해해야 정확히 작동 원리를 알 수 있습니다.
Day 1에서는 단순히 코드를 외우기보다, "왜 이렇게 동작하는가"를 중심으로 깊이 이해하는 것이 중요했습니다.
아직 많이 초반 단계라 제가 궁금했던 파트들이 나오지 않아 아는 내용들은 빠르게 넘겼습니다~!
'기타 > 자바의 신' 카테고리의 다른 글
| (자바)자바의 신 day6 - Java String 완벽 정리: intern(), 문자열 덧셈, 최적화 (0) | 2025.06.29 |
|---|---|
| (자바) 자바의 신 day5 - 자바에서 업캐스팅과 다운캐스팅, equals와 hashCode, toString의 역할 및 오버라이딩 이유 (0) | 2025.06.25 |
| (자바) 자바의 신 day4 - 상속 기본 (생성자 규칙 + 오버라이딩) (0) | 2025.06.24 |
| (자바)자바의 신 day3 - 오늘의 학습 정리 (패키지, static, 참조/기본형 등) (0) | 2025.06.20 |
| Java 신 개념 총정리 — char, this, switch, 생성자, 자료형 설계 이유까지 (day2) (4) | 2025.06.19 |