java 99

[프로그래머스 / Java] [level 1] 숫자 짝꿍

문제 설명두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니다(X에는 5가 3개, Y에는 5가 2..

Etc./개인공부 2026.02.06

커스텀 어노테이션

회원가입할때 DTO로 validation을 하는데, password 와 password2 를 비교할때, service에서 password.equals(passowrd2) 를 사용하는것은 좋지 않음.API마다 중복테스트 어려움검증 책임 혼재같은 이유때문. JoinDto@Getter@NoArgsConstructor@AllArgsConstructor@PasswordMatchpublic class JoinRequest { @NotBlank @Size(min = 4) @Pattern( regexp = "^[a-zA-Z0-9]+$", message = "아이디는 영문 대소문자와 숫자만 포함할 수 있습니다." ) private String usern..

[Java] 제네릭 vs 와일드카드

제네릭과 와일드카드의 차이1. 제네릭 (Generics)클래스나 메서드가 다룰 데이터 타입을 파라미터화해서, 컴파일 시점에 타입 안전성을 보장하는 문법임.선언 시점에 타입을 확정지음 → 컴파일러가 타입 체크 가능.예시List names = new ArrayList(); names.add("철수"); // OKnames.add(123); // 컴파일 에러List 제네릭을 통해 "이 리스트는 문자열만 담는다" 라는 타입 정보를 컴파일러에 알려줌.잘못된 타입(Integer)을 넣으면 컴파일 단계에서 막힘.2. 와일드카드 (Wildcard)제네릭 타입을 다룰 때, 정확한 타입을 지정하지 않고 유연하게 범위를 한정하고 싶을 때 사용함.? 로 표현됨.제네릭의 소비/생산(Producer/Consumer) 관점..

BE/Java 2025.09.04

변수 정리

자바(Java)의 변수 종류 정리자바의 변수는 크게 다음 4가지로 분류됨:지역 변수 (Local Variable)멤버 변수 (Member Variable)인스턴스 변수 (Instance Variable)클래스 변수 (Class Variable / static 변수)매개변수 (Parameter Variable)상수 (final 변수)각 변수는 선언 위치, 생명 주기, 메모리 저장 위치에 따라 다르게 동작함.1. 지역 변수 (Local Variable)메서드 내부, 생성자 내부, 블록 내부에서 선언된 변수임해당 블록이 실행될 때 생성되고, 블록이 종료되면 소멸됨반드시 초기화 후 사용해야 함메서드 호출 시마다 새롭게 생성됨메모리: 스택(stack) 영역에 저장됨public void printSum() { ..

BE/Java 2025.07.22

중첩, 내부클래스

Java의 중첩 클래스(Nested Class), 내부 클래스(Inner Class), 지역 클래스(Local Class) 정리Java에서는 클래스 안에 또 다른 클래스를 선언할 수 있음. 이를 중첩 클래스(Nested Class) 라고 부름.중첩 클래스는 코드의 구조를 더 논리적으로 구성할 수 있도록 도와줌.1. 중첩 클래스란?중첩 클래스(Nested Class) 는 다른 클래스 내부에 선언된 클래스를 의미함.일반 클래스 외에, 클래스의 일부 기능을 내부 클래스로 구조화할 때 사용함.중첩 클래스는 다음과 같이 크게 두 가지로 나뉨:정적 중첩 클래스 (Static Nested Class)비정적 중첩 클래스 → 내부 클래스(Inner Class)내부 클래스는 다시 세분화됨:분류static 여부선언 위치정적..

BE/Java 2025.07.21

LocalDate.parse(입력문자,포맷);

LocalDate.parse(입력문자열, 포맷터) 는 문자열을 LocalDate 객체로 변환할 때 사용하는 정적 메서드임.LocalDate.parse(입력문자, 포맷) – 문자열을 날짜로 파싱하는 메서드LocalDate.parse(String text, DateTimeFormatter formatter) 는문자열 형식의 날짜를 LocalDate 객체로 변환(parse) 하는 메서드임.입력 문자열의 형식을 DateTimeFormatter.ofPattern() 을 통해 지정할 수 있음.1. 기본 구조LocalDate.parse("2025-05-21", DateTimeFormatter.ofPattern("yyyy-MM-dd"));첫 번째 인자: 문자열(String)두 번째 인자: 포맷터(DateTimeForm..

BE/Java 2025.05.29

date.format()

Java에서 date.format() 은 날짜/시간 객체를 지정한 포맷 문자열로 변환하는 메서드임.Java 8 이후의 java.time API에서는 LocalDate, LocalDateTime, ZonedDateTime 등에서 format() 메서드를 지원함.date.format() – 날짜 객체를 문자열로 변환하는 메서드format() 은 Java 8 이상의 java.time 패키지에서 제공되며,날짜/시간 객체를 사람이 읽을 수 있는 문자열 형태로 포맷할 때 사용함.DateTimeFormatter 와 함께 사용되며, 스레드 세이프하고 직관적인 날짜 출력 방식을 제공함.1. 기본 사용법LocalDate date = LocalDate.of(2025, 5, 21);DateTimeFormatter format..

BE/Java 2025.05.28

DateTimeFormatter.ofPattern

DateTimeFormatter.ofPattern() 은 Java 8 이상에서 날짜와 시간 객체(LocalDate, LocalDateTime 등)를 포맷 문자열로 변환하거나, 반대로 문자열을 파싱할 때 사용하는 포맷 정의 메서드임.DateTimeFormatter.ofPattern – 날짜 포맷 지정 메서드DateTimeFormatter.ofPattern(String pattern) 은 Java 8 이상에서날짜와 시간의 출력 형식을 지정하거나, 문자열을 날짜로 변환할 때 사용할 포맷 형식을 정의하는 메서드임.SimpleDateFormat 의 최신 대체제로, 스레드 세이프하며 불변(immutable)한 객체임.1. 기본 사용법날짜를 문자열로 포맷하기 (format)LocalDate date = LocalDa..

BE/Java 2025.05.27

temporalAdjusters

TemporalAdjusters 는 Java 8 이상에서 제공하는 날짜 조정 유틸리티로, LocalDate 등 날짜 객체를 쉽게 변환하거나 맞춤 조정할 수 있도록 도와주는 기능임.TemporalAdjusters – 날짜를 손쉽게 조정하는 자바 유틸리티TemporalAdjusters 는 Java 8+ java.time.temporal 패키지에 포함된 클래스이며,날짜를 특정 기준(예: 다음 달 첫째 날, 이번 달 마지막 날, 특정 요일 등)으로 조정하는 기능을 제공함.1. 언제 사용하는가?복잡한 날짜 계산 로직을 간결하게 구현하고 싶을 때매달 첫날, 마지막 날 계산특정 요일(예: 이번 달 둘째 화요일 등) 구하기다음 영업일, 특정 조건의 날짜 구하기→ if문, Calendar 복잡한 코드 없이 선언적으로 날..

BE/Java 2025.05.26