Java 18

자바 컬렉션 프레임워크의 정렬과 유틸리티 클래스 완벽 가이드

안녕하세요! 오늘은 자바의 컬렉션 프레임워크에서 중요한 부분인 정렬과 Collections 유틸리티에 대해 자세히 알아보겠습니다. 이 개념들은 자바 개발자라면 반드시 알아야 할 기본적인 내용이면서도, 프로젝트에서 자주 활용되는 핵심 요소입니다.목차Comparable과 Comparator정렬 로직의 이해Collections 유틸리티 클래스가변 vs 불변 컬렉션실무에서의 자료구조 선택 가이드실전 코드 예제1. Comparable과 Comparator객체를 정렬하려면 해당 객체들을 비교할 수 있어야 합니다. 자바에서는 이를 위해 두 가지 인터페이스를 제공합니다.Comparable 인터페이스Comparable은 객체의 "자연적인 순서(Natural Ordering)"를 정의합니다. 클래스가 이 인터페이스를 구현..

자바로 만든 나만의 쇼핑몰 여행기 (3) - UI 계층 구현편

안녕하세요, 여러분! 드디어 우리 쇼핑몰 프로젝트의 마지막 이야기를 들려드릴 시간이 왔네요. 지난 두 포스트에서는 기본 도메인 모델 클래스들과 서비스 계층을 구현하는 과정을 공유했었죠. 오늘은 프로젝트의 최종 단계인 사용자 인터페이스(UI) 계층을 구현한 과정을 소개해드릴게요!UI 계층은 사용자와 직접 상호작용하는 부분으로, 이번 프로젝트에서는 콘솔 기반의 텍스트 인터페이스로 구현했어요. 복잡한 그래픽이나 웹 인터페이스는 아니지만, 객체지향적인 설계 원칙을 적용하면서 사용자가 쉽게 이용할 수 있는 UI를 만들기 위해 노력했답니다!ShopConsoleUI 클래스 설계하기UI 계층의 핵심은 ShopConsoleUI 클래스에요. 이 클래스는 사용자의 입력을 받고 적절한 서비스 메서드를 호출하여 결과를 보여주는..

자바로 만든 나만의 쇼핑몰 여행기 (2) - 서비스 계층 구현편

안녕하세요, 여러분! 지난 포스트에 이어 오늘은 우리 쇼핑몰 프로젝트의 두 번째 이야기를 들려드릴게요. 첫 번째 포스트에서는 기본 도메인 모델 클래스들(User, Product, Cart, Order 등)을 어떻게 설계했는지 소개했었죠. 오늘은 이 모델들을 활용해 실제 비즈니스 로직을 처리하는 서비스 계층을 구현한 과정을 공유할게요!인프런에서 김영한 강사님의 강의를 들으면서 '서비스 계층'의 중요성을 깨달았어요. 서비스 계층은 UI와 데이터 계층 사이에서 실제 비즈니스 로직을 담당하는 부분이랍니다. 그럼 한번 구현 과정을 살펴볼까요?서비스 계층이 왜 필요할까요?처음에는 그냥 모델 클래스에 모든 기능을 넣으면 되지 않을까 생각했어요. 하지만 그러면 코드가 엄청 복잡해지더라고요! 예를 들면:장바구니에 상품을..

자바로 만든 나만의 쇼핑몰 여행기 (1) - 기본 클래스 구현편

안녕하세요, 여러분! 오늘부터 3회에 걸쳐 제가 자바를 공부하면서 도전했던 콘솔 기반 쇼핑몰 시스템 구현 프로젝트에 대해 이야기해 볼게요. 자바를 시작한 지 약 4-5개월 차에 배운 개념들을 정리할 겸, 실전에 적용해보고 싶어서 시작했답니다. 인프런에서 김영한 강사님의 자바 강의를 수강하면서 배운 내용을 바탕으로 약 3주간(평일 3일, 하루 3시간) 작업했어요.이 프로젝트를 시작한 이유처음에는 배운 자바 개념들을 단순히 정리하고 싶었어요. 그런데 노트에 적기만 하니까 뭔가 부족하더라고요. "이왕이면 직접 코드로 구현해보면 어떨까?" 하는 생각이 들었죠. 그래서 쇼핑몰 시스템이라는 주제로 개념 정리용 프로젝트를 시작했답니다.추후에는 이 프로젝트를 기반으로 실제 앱이나 웹에서 동작하는 쇼핑몰로 발전시켜볼 계..

[25.03.20]문자열 계산하기 - 코딩 테스트 학습 노트 (Java)

📅 학습 일자: 2025-03-20⏳ 풀이 기간: 2025-03-14 ~ 2025-03-20📝 문제 개요📚 문제 제목: 문자열 계산하기🔗 문제 출처: 프로그래머스⭐ 난이도: ⭐⭐⭐⭐🔍 문제 유형문자열 관리구현📌 문제 설명문자열로 구성된 간단한 수식을 계산하는 문제입니다.입력값은 숫자와 연산자(+,-)로 이루어져 있습니다.주어진 문자열을 해석하여 최종 연산 결과를 반환해야 합니다.연산자는 +와 -만 존재합니다.💡 문제 해결 접근 방법1차 접근문자열을 서브스트링으로 잘라서 계산하는 방식을 고려했습니다.하지만 복잡도가 너무 증가할 것으로 예상되어 다른 방법을 찾기로 결정했습니다.2차 접근 (최종 채택된 방법)StringBuilder를 활용하여 숫자를 하나씩 읽고, 연산자를 만나면 저장한 숫자와 연..

🚀 [코딩 테스트] 자바 문제 풀이 기록 📌 (25.03.06~07)

✅ 3문제 풀이 | ⭐ 진수 변환 · 문자열 처리 · 패턴 인식 집중 학습📝 이번 학습 요약✔ 풀이한 문제 수: 3개✔ 집중 학습한 개념:진수 변환 (Integer.parseInt, Integer.toBinaryString)문자열 처리 (인덱스 활용, 문자열 분할)패턴 인식 및 수학적 연산 (모듈로 연산 %)✔ 가장 어려웠던 유형: 문자열 인덱스 처리💡 문제 풀이 상세 기록🔢 1번 문제: 이진수 더하기📌 출처: 프로그래머스 | ⭐⭐⭐ (중간 난이도) | ⏳ 풀이 시간: 23분💡 학습 포인트: Integer 클래스 활용한 진수 변환 및 계산✅ 핵심 코드// 이진수 문자열을 정수로 변환int num1 = Integer.parseInt(bin1, 2);int num2 = Integer.parseInt..

🔥[25.03.05] [Java] 메서드 & 오버로딩 완벽 정리!

💻 자바에서 메서드를 사용하는 이유!메서드는 코드를 간결하게 만들고, 유지보수를 쉽게 하며, 재사용성을 높여주는 핵심 요소입니다.오늘은 기본형 vs 참조형, 메서드 개념, 오버로딩과 활용법까지 깔끔하게 정리해볼게요!"같은 코드를 반복하지 말고 메서드로 깔끔하게 정리하자!"✅ 기본형 vs 참조형🔹 기본형(Primitive Type)값 자체를 저장하는 타입메서드에 전달해도 원본 값이 변경되지 않음예시: int, double, boolean, char public class PrimitiveExample { public static void main(String[] args) { int num1 = 5; int num2 = num1; // 값 복사 num2 = 1..

🔥 [25.03.04][Java] 배열 & for-each문 완벽 정리!

💻 배열(Array)과 for-each문, 자바를 공부한다면 절대 빼놓을 수 없는 중요한 개념입니다!이번 글에서는 배열의 개념, 기본 문법, 활용 방법, 그리고 for-each문과 일반 for문의 차이까지 쉽고 깔끔하게 정리해볼게요."배열과 반복문은 뗄 수 없는 관계! 한 번에 확실히 정리해봅시다!"✅ 배열(Array)이란?배열은 여러 개의 값을 하나의 변수로 관리할 수 있는 자료구조입니다.인덱스를 사용해 값을 관리 (인덱스는 0부터 시작!)같은 타입의 값만 저장 가능반복문을 활용하면 더욱 효과적으로 사용 가능!🔹 예제 1: 배열 선언 및 사용public class ArrayExample { public static void main(String[] args) { int[] numA..

🔥 [25.03.04][Java] Scanner & BufferedReader 완벽 정리!

💻 자바에서 사용자 입력을 받는 방법!대표적인 두 가지 방식인 Scanner와 BufferedReader를 비교하며, 언제 어떤 걸 써야 하는지 쉽게 정리해볼게요.또한, 디버깅 필수 기능인 print와 println 차이도 함께 다룹니다!"입력은 Scanner? BufferedReader? 언제, 어떻게 써야 할까?"✅ Scanner란?Scanner는 사용자로부터 입력을 받는 가장 간단한 방법입니다.간편한 사용법 덕분에 초보자가 배우기에 적합!엔터(개행 문자 \n)를 기준으로 입력을 처리nextLine(), nextInt(), nextDouble() 등 다양한 메서드 제공🔹 예제 1: Scanner 기본 사용법import java.util.Scanner;public class ScannerExampl..

🔥[25.03.03] [Java] 스코프 & 형변환 완벽 정리!

💻 변수의 범위(스코프)와 형변환, 제대로 이해하면 메모리 관리 최적화와 데이터 변환 실수 방지에 큰 도움이 됩니다!이번 글에서는 스코프(Scope), 형변환(Type Casting), 오버플로우(Overflow) 개념을 쉽게 정리해 볼게요."변수는 필요한 곳에서만! 형변환은 안전하게!"✅ 스코프(Scope)란?스코프란 변수의 활동 범위를 의미합니다.변수가 선언된 블록({ }) 내에서만 유효전역 변수(Global) vs 지역 변수(Local) 비교불필요한 메모리 점유를 줄이는 것이 중요!🔹 예제 1: 지역 변수와 스코프public class ScopeExample { public static void main(String[] args) { int num1 = 5; if ..