JAVA 13

JAVA - 키오스크 트러블슈팅(HashMap 수량 중복 처리)

💡 Lv. 4~6 기능 요구 사항  🐛 출력예시[ SHAKESHACK MENU ]1. Buger2. DRINK3. DESEERT0. 종료[ ORDER MENU ]4. Orders | 장바구니를 확인 후 주문합니다.5. Cancel | 진행중인 주문을 취소합니다.원하는 숫자를 입력하세요: 1 [ Buger 메뉴 ] 1. ShackBurger - $6.9:토마토, 양상추, 쉑소스가 토핑된 치즈버거2. SmokeShack - $8.9:베이컨, 체리 페퍼, 쉑소스가 토핑된 치즈버거3. Cheeseburger - $6.9:포테이토 번과 비프패티, 치즈가 토핑된 치즈버거4. Hamburger - $5.4:비프패티를 기반으로 야채가 들어간 기본버거주문할 메뉴 번호를 입력하세요 (0: 뒤로 가..

JAVA 2025.03.14

JAVA - 스트림(Stream)

✏️ 자바 스트림(Stream)이란?스트림(Stream)은 데이터를 효율적으로 처리할 수 있는 흐름이며, 기존의 for 문이나 Iterator보다 가독성과 재사용성이 뛰어난 선언형 스타일로 작성할 수 있다.  ✏️ 스트림의 특징선언형 스타일for 문이나 Iterator를 사용하지 않고, 데이터를 변환하고 필터링하는 작업을 간결하게 표현할 수 있다.일관된 방식으로 데이터 처리 가능List, Set, Map, 배열 등 다양한 데이터 소스를 같은 방식으로 다룰 수 있다.데이터 흐름 방식데이터 준비 → 중간 연산 → 최종 연산 순으로 처리된다. ✏️ for 문 vs 스트림 비교각 요소를 10배로 변환 후 출력하는 예시로 알아보자arrayList 의 각 요소를 10배로 변환한다.아래 예시를 보고 for 문과 스트..

JAVA 2025.03.13

JAVA - 동등성과 동일성

1. 동등성(Equality) 동등성은 두 객체가 같은 정보를 가지고 있다는 의미다. 즉, 두 객체들이 다른 메모리 주소를 가리키고 있을 수 있지만, 내용이 같으면 동등하다고 말할 수가 있다.   동등성은 equals() 메서드를 사용하여 비교한다. 이 메서드는 객체의 내용이 같은지를 판단한다.String a = new String("hello");String b = new String("hello");System.out.println(a.equals(b)); // true 두 객체 안에 같은 정보가 들어가 있으므로 true라고 알 수 있다. 2. 동일성(Identity)  동일성은  두 개의 객체가 완전히 같은 경우를 보고 동일성이라 한다.  즉, 두 객체가 사실상 하나의 객체로 봐도 무방하고, 메모리..

JAVA 2025.03.12

JAVA - 키오스크 과제(Lv1, Lv2)

계산기 과제를 마무리하고 바로 키오스크 과제를 하며 복습했다.총레벨은 5까지 있고, 오늘은 2까지 해봤다. Lv 1. 기본적인 키오스크를 프로그래밍레벨 당 기능 요구 햄버거 메뉴 출력 및 선택하기 실행시 햄버거 메뉴가 표시되고, 이후 Scanner로 숫자를 입력받아서 메뉴를 선택할 수 있다. 제시된 메뉴 중 입력받은 숫자에 따라 다른 로직을 실행하는 코드를 작성합니다.반복문을 이용해서 특정 번호가 입력되면 프로그램을 종료합니다.package kiosk.Lv1;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ..

JAVA 2025.03.10

JAVA - 추상클래스

미니 프로젝트(계산기)를 하면서 추상클래스에 대해 아직 헷갈리는 부분이 있어 정리하게 됐다. 추상클래스란? 추상 클래스(abstract class)는 여러 실체 클래스(구체적인 클래스)의 공통적인 부분(변수, 메서드)을 추출하여 선언한 클래스다.   사실 학습하면서 이렇게 이론만으로는 추상 클래스가 정확히 어떤 것인지 감이 잡히지 않았다.그래서 먼저 "추상"이라는 단어의 의미를 정확히 이해하는 것이 중요하다고 생각하여 정의를 찾아보았다. 추상의 의미먼저 "추상"이라는 단어는 공통적인 특징을 뽑아내어 개념화하는 것을 의미한다. 즉 여러 개의 구체적인 각 대상에서 서로 공통된 특징을 뽑아내어 하나의 개념으로 정리 하는 것이다. 그림으로 보면 이해하기 쉽다.추상 클래스: 'Animal'은 모든 동물의 공통된 ..

JAVA 2025.03.07

JAVA - Optional

Optional이란?Optional 객체는 null을 안전하게 다루게 해주는 컨테이너 객체이다.주로 NullPointerException(NPE) 방지 및 안전한 값 처리를 위해 사용한다.Optional타입은  다양한 메서드들을 제공한다.  Optional 객체 생성 방법 #️⃣ .empty() 값이 없는 빈 Optional 객체를 생성Optional emptyOpt = Optional.empty();  #️⃣ .of() 값이 있는 Optional 생성 (of)Optional opt = Optional.of("Hello, World!");  #️⃣ .ofNullable() ofNullable()은 null 가능성이 있는 값을 안전하게 감쌀 때 사용 Optional optNullable = Optiona..

JAVA 2025.03.06

JAVA 계산기 트러블 슈팅

🛠️ Trouble Shooting❗문제 발견: 콘솔에서 첫 번째, 두 번째 숫자를 입력할 때 숫자가 아닌 문자 또는 공백으로 입력할 경우 프로그램이 비정상적으로 종료되는 트러블 발생❗문제 원인  부분:  이 문제는 Scanner 클래스에서 발생하는 입력 타입 불일치로 인한 예외 처리 부족으로 발생한다. scanner.nextDouble()이나 scanner.next(). charAt(0) 메서드를 사용하여 값을 입력받을 때, 사용자가 예상되는 타입 (예: int, double, char)과 다른 형식의 데이터를 입력하면, 프로그램은 InputMismatchException과 같은 예외를 발생시킵니다. 이 예외가 발생하면 프로그램은 예외를 처리하지 않으면 비정상적으로 종료된다.int first = sc..

JAVA 2025.03.05

JAVA - Enum

Enum이란?enum(열거형, enumeration)은 서로 연관된 상수들의 집합을 정의하는 특수한 데이터 타입즉, 특정 값들만 가질 수 있도록 제한된 상수들의 묶음 Enum을 사용했을 때 장점한정된 값만 가질 수 있음 ☞ enum에 정의된 값 외에는 가질 수 없음.코드의 가독성과 안정성이 향상됨 ☞ 잘못된 값을 넣는 실수를 방지.객체처럼 동작 ☞ 필드, 메서드, 생성자를 가질 수 있음.switch-case 문에서 유용하게 사용 ☞ 코드 가독성 증가.수정 시 변경 범위가 최소화된다.  ☞  enum만 수정하면 됨  Enum 구현 계산기 과제를 하면서 enum이 어떻게 쓰이는지 이해하게 되었다.아래에 보이는 코드처럼 char타입 연산자를 주면서 비교했다면, 입력할 때 " +",  " / " 같은 공백이 있..

JAVA 2025.03.05

JAVA - 제네릭(Generic)

제네릭(Generic) 코드의 재사용성과 타입 안정성을 높이기 위해 컴파일 시점에 타입을 결정하는 문법이다.제네릭이란?  제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정할 수 있도록 하는 기능이다.타입 안정성(Type Safety)을 보장하며, 코드의 재사용성을 높이는 장점이 있다.제네릭을 사용하면 개발자가 원하는 타입을 직접 지정하여 객체를 생성할 수 있다.  제네릭을 사용하면 클래스 내부에서 사용할 데이터 타입을 외부에서 지정할 수 있으며, 원하는 타입으로 객체를 생성하여 타입 안정성과 코드 재사용성을 높일 수 있다 제네릭 클래스 ()▼제네릭 클래스public class GenericBox { private T item; public GenericBox(T ..

JAVA 2025.03.04

JAVA로 간단한 계산기 구현 2

저번 계산기 게시글 완성 코드를 가지고 이번에는 게터 세터를 사용하여 삭제, 수정, 저장 메서드 기능들을  추가적으로 구현해 봤다.  기능 가이드step 1. 사칙연산을 수행 후, 결괏값 반환 메서드 구현 & 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성step 2. Lv 1에서 구현한 App 클래스의 main 메서드에 Calculator 클래스가 활용될 수 있도록 수정step 3. App 클래스의 main 메서드에서 Calculator 클래스의 연산 결과를 저장하고 있는 컬렉션 필드에 직접 접근하지 못하도록 수정 (캡슐화)step 4. Calculator 클래스에 저장된 연산 결과들 중 가장 먼저 저장된 데이터를 삭제하는 기능을 가진 메서드를 구현한 후 App 클래스의..

JAVA 2025.02.28