이 저장소는 자바 프로그래밍의 기초부터 객체 지향 개념, 고급 기능까지 다양한 예제 코드를 포함하고 있습니다. 각 패키지는 특정 주제를 다루며, 단계별 학습과 실습을 돕도록 구성되어 있습니다.
- day1 ~ day3: 변수, 데이터 타입 (정수, 실수, 문자, 불리언), 형변환 (자동/강제), 연산자 (산술, 비교, 논리, 비트, 증감, 대입), 콘솔 입출력 (
Scanner,printf). - day4 ~ day5: 제어문 (if, else if, switch), 반복문 (for, while, do-while),
break,continue,Math.random(). - 학습 내용 텍스트 파일: 각 날짜별 학습 내용을 요약한
.txt파일 포함.
- day6 ~ day8: 배열 (1차원, 다차원), 객체 배열, 참조 타입 비교,
String객체 (리터럴 방식 vsnew,equals(),hashCode(),intern()),StringBuffer(append,insert,delete등). - day9: 클래스와 객체 (
Student예제), 메서드 (정의, 호출, 반환값, 매개변수, 가변 길이 매개변수), 생성자. - day10: 싱글톤 패턴 (
SingleTone,ShopService),static멤버, 은행 애플리케이션 예제 (BankApplication). - day11: 상속 (기본 개념,
extends, 메서드 오버라이딩), 접근 제한자, 다형성 기초, 관련 실습 문제. - day12: 추상 클래스 (
abstract), 추상 메서드, 관련 실습 문제 (도형 넓이 계산, 음료 가게). - day13: 인터페이스 (
interface, 구현implements), 디폴트 메서드,static메서드, 다중 인터페이스 구현, 관련 실습 문제.
- day13: 예외 처리 (
try-catch-finally,throws, 사용자 정의 예외), 컴파일 예외 vs 런타임 예외. - day14: 제네릭 (
<T>, 타입 파라미터), 컬렉션 프레임워크 기초 (List,Stack,Queue),AutoCloseable. - day15: 컬렉션 심화 (
LinkedListvsArrayList성능 비교,Set,HashSet,TreeSet,Map,HashMap,Properties), 자료구조 (단일 연결 리스트, 이진 탐색 트리). - day16: 정렬 (
Comparable,Comparator), 불변 컬렉션 (List.of,Map.of). - day17: 중첩 클래스, 익명 클래스, 람다식 (
Lambda Expressions, 함수형 인터페이스@FunctionalInterface). - day18 ~ day20: 스트림 API (
Stream), 파이프라인, 중간 연산 (filter,map,flatMap,sorted,distinct), 최종 연산 (forEach,collect,sum,average,reduce,groupingBy),Optional. - day21 ~ day22: I/O 스트림 (
InputStream/OutputStream,Reader/Writer,FileInputStream/FileOutputStream,FileReader/FileWriter,DataInputStream/DataOutputStream), 보조 스트림, 객체 직렬화 (Serializable,ObjectInputStream/ObjectOutputStream,transient), JSON 처리 (org.json), 파일 및 디렉토리 관리. - day23: 네트워킹 (
InetAddress,Socket,ServerSocket), TCP 소켓 프로그래밍 (기본 에코 서버/클라이언트, 멀티 스레드 에코 서버). - day24: 스레드 (
Thread클래스,Runnable인터페이스, 스레드 이름, 우선순위, 동기화synchronized, 스레드 풀ExecutorService), NIO (Non-blocking I/O,Channel,Buffer,Selector, 비동기 채널).
- BookMarketProject: 온라인 서점 콘솔 애플리케이션 (사용자/관리자, 도서 목록, 장바구니, 주문).
- board_project: 간단한 콘솔 게시판 (CRUD 기능 구현, 버전별 개선).
- student_score_program: 학생 성적 입력, 저장, 정렬 및 출력 프로그램 (파일 I/O, 직렬화 활용).
- tcp_ip_toy_project: TCP 소켓 통신 기반 상품 관리 프로그램 (Client-Server, JSON 활용).
- json_tcp_chat_program: JSON 형식 메시지를 사용하는 TCP 기반 채팅 프로그램 (멀티 스레드 서버).
.gitignore: 버전 관리에서 제외할 파일 설정.README.md: 프로젝트 개요 (현재 파일).jjw.json,person.dat등: 예제 실행 결과 또는 데이터 파일.
- 자바 기본 문법: 변수, 타입, 연산자, 제어문, 반복문
- 객체 지향 프로그래밍 (OOP): 클래스, 객체, 상속, 다형성, 추상 클래스, 인터페이스
- 자바 고급 기능: 예외 처리, 제네릭, 컬렉션 프레임워크, 람다식, 스트림 API
- I/O 및 네트워킹: 파일 입출력, 객체 직렬화, JSON, TCP/IP 소켓 통신, NIO
- 스레드: 멀티스레딩, 동기화, 스레드 풀
- 프로젝트 구현: 학습한 내용을 바탕으로 콘솔 기반 미니 애플리케이션 개발
- 자바를 처음 배우면서 인터페이스 개념에서 어려움이 있었습니다.
- 인터페이스를 처음 접했을 때, 이걸 어떻게 활용해야 하는 지 의문이 있었으나. 작은 실습들을 진행하면서 약한 결합이 주는 편리성을 체험해볼 수 있었습니다.
- 인터페이스를 통해 결합도가 낮출 경우, 한 부분에서 문제가 생겨 수정이 필요할 때 그 부분만 수정하면 되기 때문에 유지보수가 매우 편리하다는 것을 직접 느꼈습니다.
- 다만, 고급 기능 가운데, 제네렉이나 스레드 부분은 이론적인 부분은 학습했으나, 추후 미니 프로젝트를 진행하는 과정에서 활용해보지 못해서 지속적인 학습이 필요할 것 같습니다.