java/chatgpt 23

[Java/ChatGPT] Day 22: Stream API 고급 활용 & Optional

[ 학습 목표 ]List을 Stream으로 가공, 필터링, 정렬Optional로 NPE 방지 및 결과 처리 (NPE = NullPointerException)[ 이론 ]1. 사용 기술기술설명Streamfilter(), sorted(), map(), forEach() 등ComparatorComparator.comparing() 등으로 정렬Optional검색 결과가 없을 경우 예외 방지2. 예시 기능: 검색 + 정렬 고급화1) 정렬: 출판일 기준 최신순 정렬books.stream() .sorted(Comparator.comparing(Book::getPublishedDate).reversed()) .forEach(System.out::println);2) 필터 + 정렬: 특정 작가의 책만 출판일 기준으로..

[Java/ChatGPT] Day 21: 파일 기반 데이터 저장 및 로딩 (실제 시스템처럼)

[ 학습 목표 ]books.txt에 저장된 내용을 프로그램 시작 시 읽어와서 List으로 만들기프로그램 종료 시 List의 모든 내용을 다시 파일에 저장하기도서 등록, 검색, 삭제 등 모든 작업을 파일과 연동 [ 실습 ]1. 프로잭트 개념 요약시작 시: books.txt 읽어서 List로 변환도서 등록/삭제: 리스트에 추가/삭제만 함 (List)종료 시: List의 내용을 books.txt에 덮어쓰기2. 구조 미리 보기📂 src/├── domain/│ └── Book.java├── service/│ └── LibraryService.java├── io/│ └── FileHandler.java ✅ NEW├── Main.java└── books.txt3. 코드1) Book.javapack..

[Java/ChatGPT] Day 20: 날짜(LocalDate) 활용 & 조건 기반 검색 기능

[ 학습 목표 ]java.time.LocalDate 를 사용해 현재 날짜와 출판 연도 등을 관리한다.도서 정보에 출판 연도를 String -> LocalDate 로 바꿔 정확한 날짜 비교 및 정렬을 해본다.검색 기능을 개선해서 연도 기준, 키워드 기준 검색이 가능하도록 한다.[ 이론 ]1. LocalDate란?java.time 패키지에서 제공날짜(연도, 월, 일)를 다룰 수 있는 객체import java.time.LocalDate;LocalDate today = LocalDate.now(); // 현재 날짜LocalDate published = LocalDate.of(2020, 03, 14); // 2020년 3월 14일[ 실습 ]1. 개선할 Book 클래스day19에서 개선하면 됨year: String..

[Java/ChatGPT] Day 19: 예외 처리와 파일 연동 실전 연습

[ 학습 목표 ]파일 읽기/쓰기에서 발생할 수 있는 예외를 구체적으로 처리한다.도서 관리 기능을 작은 프로그램처럼 구조화해서 개발한다.지금까지 배운, 클래스, 예외, 파일 I/O, 리스트 활용 능력을 종합한다.[ 이론 ]1. 자주 발생하는 예외 상황1) 파일이 존재하지 않을 경우BufferedReader br = new BufferedReader(new FileReader("없는파일.txt"));// → FileNotFoundException 발생2) 파일에 쓸 수 없거나 경로가 잘못됐을 경우BufferedWriter bw = new BufferedWriter(new FileWriter("/root/test.txt"));// → AccessDeniedException or IOException3) 해결 ..

[Java/ChatGPT] Day 18: 파일 입출력 (File I/O)

[ 학습 목표 ]텍스트 파일을 읽고 쓰는 방법을 이해한다.File, FileWriter, BufferedReader 등의 클래스를 활용한다.도서 정보 또는 사용자 정보를 파일에 젖아하고 불러올 수 있다.[ 이론 ]1. 파일 입출력 기본 개념1) 파일 쓰기 (FileWriter)FileWriter를 사용해 해당 파일이 작성한 경로에 없으면 파일이 생성되고 안에 내용이 입력된다.파일이 있으면 해당 파일에 입력이 된다.import java.io.FileWriter;import java.io.IOException;public class WriterExample { public static void main(String[] args) { try { // 저장할 경로와 파일명 ..

[Java/ChatGPT] Day 17: 람다식 (Lambda) & 스트림 (Stream)

[ 학습목표 ]람다식의 기본 문법과 사용 이유를 이해한다.함수형 인터페이스를 알아본다.스트림(Stream)을 이용한 컬렉션 처리 방법을 학습한다.기존의 for문/if문을 더 간결한 코드로 대체할 수 있다.[ 이론 ]1. 람디식이란?메서드를 하나의 식(Expression)으로 표현한 것.불필요한 코드를 줄이고 나결하게 로직을 전달할 수 있다.2. 람다식 기본 문법(매개변수) -> { 실행문 }3. 람다식 예제// 기본 형태Runnable r = () -> System.out.println("Hello Lambda!");r.run(); // Hello Lambda! 출력// 매개변수 있는 경우Consumer c = (s) -> System.out.println("입력값: " + s);c.accept("테스트..

[Java/ChatGPT] Day 16.5: 키워드 몇 가지 정리

[ 학습 목표 ]각 키워드들의 차이를 알고 이해하자.[ 설명 ]✅ static- static은 클래스에 소속된 멤버를 정의할 때 사용한다.- 인스턴스를 생성하지 않고도 클래스명으로 직접 접근이 가능하다.- static 필드(변수)는 모든 인스턴스가 공유한다.- static 메서드는 인스턴스 멤버(this, non-static)에 접근할 수 없다. ✅ final- final은 한 번 할당된 값을 변경할 수 없게 만든다.- 변수: 값을 제할당할 수 없음 (상수처럼 동작)- 메서드: 오버라이딩 금지- 클래스: 상속 금지- 메모리에 몇 번 올라가느냐는 static과는 별개이며, final 자체로는 메모리 최적화와 무관하다. ✅ static final- static final은 변하지 않은 상수(Constant)..

[Java/ChatGPT] Day 16: static, final, 상수, 유틸리티 클래스

[ 학습 목표 ]static, final 키워드의 개념과 차이를 이해하고 사용할 수 있다.클래스에 공통적으로 쓰이는 데이터를 상수(static final)로 만들 수 있다.객체 생성 없이 사용하는 유틸리티 메서드를 만들 수 있다.[ 이론 ]1. static : 클래스 변수 / 클래스 메서드인스턴스가 아니라 클래스 자체에 속한 변수와 메서드static 키워드는 메모리에 딱 1번만 올라감모든 인스턴스가 같은 공간을 공유함public class Counter { static int count = 0; Counter() { count++; System.out.println("현재 객체 수: " + count); }}public class Main { public s..

[Java/ChatGPT] Day 15: 컬렉션 정렬 (Comparable & Comparator)

[ 학습 목표 ]Collections.sort()를 사용해 리스트 정렬 방법을 익힌다.Comparable 인터페이스를 구현하여 기본 정렬 기준을 만든다.Comparator 인터페이스를 사용해 동적으로 정렬 기준을 바꿔본다.[ 이론 ]1. 기본 정렬 : Collections.sort(List)기본 타입(String, Integer 등)은 정렬 기준이 이미 정의되어 있다.import java.util.*;public class SortExample { public static void main(String[] args) { List fruits = new ArrayList(); fruits.add("banana"); fruits.add("apple"); fruits.add("orang..

[Java/ChatGPT] Day 14: 컬렉션 프레임워크 기초(List, Set, Map)

[ 학습 목표 ]자바에서 데이터를 담는 대표적인 자료구조인 List, Set, Map을 이해하고 사용할 수 있다.각각의 특징, 선언 방법, 주요 메서드를 알아본다.[ 이론 ]1. 컬렉션 프레임워크란?자바에서 데이터(객체)를 효율적으로 저장하고 관리하기 위한 표준화된 자료구조 모음 2. 컬렉션 프레임워크 특징배열보다 유연하고 다양한 기능을 제공대표 인터페이스: List, Set, Map 3. List순서가 있고, 중복을 허용하는 자료구조import java.util.ArrayList;import java.util.List;public class ListExample { public static void main(String[] args) { List list = new ArrayList(); ..