자바 기초 학습 프로젝트
자바 기초 학습 프로젝트
🎯 프로젝트 개요
자바 프로그래밍의 기초부터 차근차근 배우며 실습한 내용을 정리하는 공간입니다. 책을 읽고 코드를 작성하면서 생긴 질문들과 그에 대한 답변을 함께 기록합니다.
📖 학습 자료
메인 교재
- Java 기초 학습 가이드 (튜토리얼 기반)
- 실습 위주로 배우는 Java 입문서
개발 환경
- IDE: IntelliJ IDEA
- JDK: Java Development Kit (최신 버전)
- OS: Linux (6.8.0-90-generic)
🎓 학습 주제
Chapter 1-2: 자바 시작하기
- 자바란 무엇인가
- JVM (Java Virtual Machine) 동작 원리
- 첫 번째 프로그램 작성
- IntelliJ IDEA 사용법
핵심 개념:
- Write Once, Run Everywhere
- 소스코드 → 바이트코드 → JVM 실행
- 컴파일과 실행 과정
Chapter 3: 변수와 타입
- 변수의 선언과 초기화
- 기본형 타입 (Primitive Types)
- 상수와 리터럴
- printf를 이용한 형식화된 출력
- Scanner로 입력받기
- 형변환 (Type Casting)
핵심 개념:
- 8가지 기본 타입: boolean, char, byte, short, int, long, float, double
- char vs String 차이
- 기본형 간의 형변환 vs 참조형 변환
- 삼항 연산자와 문장(statement)의 차이
💬 학습 방식
이 프로젝트에서 다루는 학습 패턴:
1. 개념 이해
Q: "out 폴더는 왜 생기는가?"
Q: "왜 파일명과 public 클래스명이 일치해야 하는가?"
2. 문법 차이 비교
Q: "char와 String의 차이는?"
Q: "큰따옴표와 작은따옴표의 차이는?"
3. 에러 해결
Q: "왜 double을 String으로 형변환할 수 없는가?"
Q: "삼항 연산자를 단독으로 사용할 수 없는 이유는?"
4. 실습 문제
- 온도 변환기 (섭씨 → 화씨)
- 윤년 판별기
- 계산기 프로그램
🛠️ 학습 기록
작성된 문서
- 2026-01-06: 자바 시작하기 - JVM과 첫 프로그램
- 자바의 기본 개념
- JVM 동작 원리
- IntelliJ로 첫 프로그램 작성
- 2026-01-07: 자바 변수와 타입 - 기본형부터 형변환까지
- 변수 선언과 초기화
- 기본 타입과 리터럴
- Scanner 입력
- 형변환의 이해
📌 주요 질문과 답변
Q1: out 폴더는 왜 생기는가?
IntelliJ가 컴파일된 .class 파일들을 저장하는 빌드 출력 디렉토리입니다. 소스와 빌드 결과물을 분리하여 프로젝트 구조를 깔끔하게 유지합니다.
Q2: 왜 파일명과 public 클래스명이 일치해야 하는가?
- 컴파일러와 JVM이 클래스 이름으로 파일을 찾기 때문
- 개발자가 코드를 찾기 쉽게 하기 위해
- 하나의 파일 = 하나의 책임 원칙 유도
Q3: %n은 무엇인가?
플랫폼 독립적인 줄바꿈 문자입니다. \n은 운영체제마다 다를 수 있지만, %n은 현재 시스템에 맞는 줄바꿈을 자동 선택합니다.
Q4: char와 String의 차이는?
- char: 단일 문자, 작은따옴표, 기본형
- String: 문자열 (0개 이상), 큰따옴표, 참조형
Q5: 왜 삼항 연산자를 단독으로 사용할 수 없는가?
삼항 연산자는 표현식(expression)이지 문장(statement)이 아니기 때문입니다. 결과값을 변수에 할당하거나 다른 곳에 사용해야 합니다.
🎯 다음 학습 계획
예정 주제
- Chapter 4: 조건문 (if, switch)
- Chapter 5: 반복문 (for, while)
- Chapter 6: 배열 (Array)
- Chapter 7: 메서드 (Method)
- Chapter 8: 객체지향 프로그래밍 (OOP)
📂 디렉토리 구조
java/
├── README.md (이 파일)
├── 2026-01-06-chap1.md # 자바 시작하기
├── 2026-01-07-chap2.md # 변수와 타입
└── (앞으로 추가될 학습 파일들)
💡 학습 철학
- 이해 중심: 단순 암기가 아닌 “왜?”를 항상 질문
- 실습 중심: 모든 개념은 직접 코드를 작성하며 확인
- 비교 학습: Python 등 다른 언어와 비교하며 이해
- 기록 중심: 질문과 답변을 모두 문서화
🔗 관련 링크
- 분산 시스템 학습
- 개발 블로그 포스트 (예정)