JAVA 10

[Java] Optional 사용

✔️ Optional이란?Java8에서 추가된 클래스NullPointerException을 방지하고, null-safe하게 코드를 작성할 수 있도록 도와준다. 더보기⚠️ NullPointerException(NPE)이란?값이 없는(null) 객체의 메서드나 필드에 접근할 때 발생하는 런타임 예외프로젝트 중 브라우저에서 받아온 Map 객체에서 값을 꺼내 사용하려다 값이 존재하지 않는 key에 접근하면서 NullPointerException이 발생 😓이를 해결하기 위해 Optional을 적용했고,.orElse, .ifPresent 등을 활용해 문제를 해결했다. ⚪ Optioanl 객체 생성하기.empty()Optioanl.empty()비어 있는 Optional 객체 생성 .of(arg)Optioanl.of..

JAVA/STUDY 2025.04.10

[Java] Enum 열거형 타입

Enum이란? Enum은 "Enumeration"의 약자로, "열거, 목록, 일람표"라는 뜻을 가지고 있으며 한글로는 열거형이라고 부른다.즉, 열거형(enum)은 요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형으로, 상수 데이터들의 집합이다. 프로그래밍을 하다보면 배열이나 리스트 등 여러 개의 묶음 데이터를 다루는 일이 많다.이 묶음 데이터 중에는 데이터 주제에 따라 몇가지로 한정된 값만을 가는 경우가 존재한다.ex) 요일, 계절, 주사위 등이와 같이 정해져 있는 한정된 데이터 묶음을 열거형 타입인 Enum으로 묶어주면 보다 구조적으로 프로그래밍을 할 수 있다.  Enum 장점 코드가 단순해지며 가독성이 좋아진다.허용 가능한 값들을 제한하여 유형 안전을 제공한다.키워드 enum을 사용하기 때문에 ..

JAVA/STUDY 2024.08.09

[JAVA] 멀티 스레드(1)

멀티 스레드의 개념 💡 프로세스와 스레드 📌 프로세스란? 운영체제에서 실행 중인 하나의 애플리케이션을 프로세스라고 부른다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다. 하나의 애플리케이션은 다중 프로세스를 만들기도 한다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원, 그리고 스레드로 구성된다. 📌 스레드란? 프로세스 내에서 실제로 작업을 수행하는 주체를 뜻한다. 모든 프로세스는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 부른다. 📌 멀티테스킹이란? 두 가지 이상의 작업을 동시에 처리하는 것을 의미한다. 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원..

JAVA/STUDY 2024.02.15

[JAVA] 배열 (Array)

1. 배열이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라고 한다. 하나의 블록 안에 여러 데이터들을 모아 집합시켜 저장함으로써 데이터를 구조적으로 다루는데 도와준다. // 각각의 변수로 선언 int a1, a2, a3, a4, a5; // 5개의 int 값을 저장할 수 있는 배열 생성 int[] a = new int [5]; 만약 변수로 선언하게 되면 서로 다른 5개의 int 값 저장 공간이 생성된다. 그러나 배열로 생성하게 되면 a[0] ~ a[4]까지 5개의 int값을 저장할 수 있는 공간이 생성되고, a는 배열을 다루는데 필요한 참조변수, 배열의 주소값을 가지게 된다. 2. 배열의 선언과 생성 1) 배열의 선언 배열의 선언 방법은 원하는 타입의 변수를 선언한 후, 변수 또는 태..

JAVA/STUDY 2024.02.14

[JAVA] 조건문과 반복문(if, switch, for, while문)

1. 제어문 제어문은 프로그램의 순차적인 흐름을 바꾸어주는 문장으로, 자바 프로그램의 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 문장이다. 제어문에는 조건문, 반복문, 분기문이 있다. 그중 조건문과 반복문에 대해 알아볼 것이다. 2. 조건문 조건문에는 if문 / switch문이 있다. 1-1) if문 if (조건식) { 실행문; 실행문; } if문의 중괄호({}) 블록에는 여러 개의 실행문이 들어갈 수 있으며 if문 뒤에 오는 조건식이 참(true)이면 블록 안의 실행문이 실행된다. if(score>=90) { System.out.println("점수가 90보다 큽니다."); System.out.println("등급은 A입니다."); } 1-2) if-else문 if문의 조건식이 참(t..

JAVA/STUDY 2024.02.12

[JAVA] 자바 변수, 선언, 초기화

1. 자바 변수란? 어떠한 값(data)을 저장할 수 있는 저장 공간이다. 변수를 사용하는 이유는 여러 번의 수정이 필요한 작업이 있을 때 사용된 값을 모든 데이터에서 수정하는 것이 아니라, 변수에 할당시킨 값만 초기화 한다면 단 한 번의 수정으로 모든 값을 변경할 수 있기 때문이다. package ct.step1; public class P1 { public static void main(String[] args) { System.out.println(100 + 10); System.out.println(100 - 10); System.out.println(100 * 10); System.out.println(100 / 10); System.out.println(100 % 10); } } 👆 위 코드의..

JAVA/STUDY 2024.02.12

[BAEKJOON] 꼬마 정민

[문제] 꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다! 입력 첫 번째 줄에 A, B, C( 1 ≤ A, B, C ≤ 1012) 이 공백을 사이에 두고 주어진다. 출력 A + B + C의 값을 출력한다. 그냥 A + B + C를 하면 되는 문제 아닌가? 라고 생각하며 타닥타닥.. 쳤지만.. java.util.InputMismatchException 런타임 에러가 발생했다. . 런타임 에러가 발생하는 이유는 ❓ 1) 입력한 수가 데이터 형과 맞지 않거나 2) 데이터 형의 범위를 넘을 경우에 발생한다. import java.util.Scanner; public class Main{ public static void main(String[] args) {..

JAVA/CT 2024.02.12

[BAEKJOON] 곱셈

[문제] (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다. 출력 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. (3) = 472 * 5 (4) = 472 * 8 (5) = 472 * 3 (6) = 472 * 385인 것은 알겠다. 근데 int 자리수 구하는 거 .. 어떻게 하는건데 .. ❓ 문자열로 바꿔서 잘라내기 ,, 등등 많은 방법들이 있었지만, 내가 사용한 방식은 나눗셈을..

JAVA/CT 2024.02.12

[BAEKJOON] 1998년생인 내가 태국에서는 2541년생?!

[문제] ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오. 입력 서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000) 출력 불기 연도를 서기 연도로 변환한 결과를 출력한다. 불기와 서기가 얼마나 차이나는데 ❓ 불기 연도와 서기 연도를 변환하라는데 그게 뭔데 . .? 그래서 검색해 본 결과! ➰불기는 석가..

JAVA/CT 2024.02.12

[PJT] 장바구니 담기_트러블 슈팅

[요구사항] CustomClass - 고객번호, 이름, 나이 필드 선언 - addToCart(), purchase() 메소드를 통해 장바구니에 담고 결제하기 + 이후 ProductClass타입의 shopingBasket 필드 선언 -> addToCart()에서 매개변수로 받은 객체를 배열에 담기 위함 ProductClass - 물품번호, 이름, 가격, 수량 필드 선언 🚫 트러블 슈팅 🤕 1. 객체 타입을 배열에 담기 배우면서 기본 타입이나 String 타입으로만 배열에 담았기 때문에 객체 타입으로 담는 방식이 생각이 안났다. 생성자를 통해 main()에서 shopingBasket을 초기화 해주는 부분까지는 했지만, addToCart()메소드에서 어떻게 담으라는 건지 이해가 안됐다 . . void addT..

JAVA/PJT 2024.02.11