![[Java] @NoArgsConstructor(access = AccessLevel.PROTECTED)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEB68d%2FbtsM4eqe1yy%2FEQNkS2tqllakkI5iCZ3y7k%2Fimg.jpg)
@NoArgsConstructor(access = PROTECTED)는 Lombok에서 제공하는 애노테이션으로, 기본 생성자(매개변수가 없는 생성자)를 접근 제어자 protected로 생성해주는 기능을 한다.핵심 의미@NoArgsConstructor(access = AccessLevel.PROTECTED)이 코드는 다음과 같은 생성자를 자동 생성한다. protected 클래스이름() {}즉, 생성자 메서드를 일일이 작성하지 않아도 되고, 접근 제어자까지 명확하게 설정 가능하다. 사용 목적JPA 엔티티용 기본 생성자JPA는 엔티티 객체를 만들 때 기본 생성자가 필요하다.하지만 외부에서 마음대로 new로 객체를 생성하는 건 막고 싶을 때 protected를 쓴다.@Entity@NoArgsConstructor..
![[Java] 추상클래스와 인터페이스 차이점](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0w723%2FbtsMWvGjhQF%2F1KJya0VJxkTJrlLiQAtBN0%2Fimg.jpg)
원본글 출처 : 바로가기 ☕ 인터페이스 vs 추상클래스 용도 차이점 - 완벽 이해인터페이스 vs 추상클래스 비교 이 글을 찾아보는 독자분들은 아마도 이미 인터페이스와 추상클래스 개념을 학습한 뒤에 이 둘에 대하여 차이의 모호함 때문에 방문 했겠지만, 그래도 다시한번inpa.tistory.com 추상 클래스상속 받을 클래스들이 공통으로 가지는 메소드와 필드가 많아 중복 멤버 통합을 할때멤버에 public 이외의 접근자(protected, private) 선언이 필요한 경우non-static, non-final 필드 선언이 필요한 경우 (각 인스턴스에서 상태 변경을 위한 메소드가 필요한 경우)요구사항과 함께 구현 세부 정보의 일부 기능만 지정했을 때하위 클래스가 오버라이드하여 재정의하는 기능들을 공유하기 위..
![[Java] 정규 표현식 클래스](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqSOs3%2FbtsMWl3EUwe%2Fnr2F7ZzxwXOTw9xIJZmoj1%2Fimg.jpg)
이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 정규 표현식 클래스문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 하는 경우가 있다. 예를 들어 이메일이나 전화번호를 사용자가 제대로 입력했는지 검증할 때이다. 자바는 정규 표현식(Regular Expression)을 이용해서 문자열이 올바르게 구성되어 있는지 검증한다. 정규 표현식 작성 방법정규 표현식은 문자 또는 숫자와 관련된 표현과 반복 기호가 결합된 문자열이다.아래는 정규 표현식을 구성하는 표현 및 기호에 대한 설명이다. 다음은 02-123-1234 또는 010-1234-5678과 같은 전화번호를 위한 정규 표현식이다.// 02-123-1234 형태"^02-\\d{3}..
![[Java] 형식(Format) 클래스](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPqg8R%2FbtsMUqkZYx5%2FelHmckQNmaCQqw3tNZI64K%2Fimg.jpg)
이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 형식 클래스Format(형식) 클래스는 숫자 또는 날짜를 원하는 형태의 문자열로 변환해주는 기능을 제공한다. Format 클래스는 java.text 패키지에 포함되어 있는데, 주요 Format 클래스는 다음과 같다. DecimalFormatDecimalFormat은 숫자를 형식화된 문자열로 변환하는 기능을 제공한다.원하는 형식으로 표현하기 위해 아래와 같은 패턴을 사용한다. 패턴 정보와 함께 DecimalFormat 객체를 생성하고 format() 메소드로 숫자를 제공하면 패턴에 따른 형식화된 문자열을 얻을 수 있다.import java.text.DecimalFormat;public ..
![[Java] BigInteger 클래스](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvaZ5K%2FbtsMyk5Ob4e%2FxtBtTfrh3L6Sw3lOHQLibK%2Fimg.jpg)
BigInteger는 Java에서 기본적으로 제공하는 정수 타입(int, long)보다 더 큰 정수를 다룰 수 있도록 설계된 클래스이다.int는 32비트 정수(약 ±21억), long은 64비트 정수(약 ±9경)까지만 저장할 수 있지만, BigInteger는 이보다 훨씬 큰 정수(무한대)를 다룰 수 있다.생성문자열을 이용한 생성import java.math.BigInteger;public class Main { public static void main(String[] args) { BigInteger bigInt1 = new BigInteger("123456789012345678901234567890"); System.out.println(bigInt1); // 1234..
![[Java] Optional<T>](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjI3pd%2FbtsFNw5Jrrh%2F3UyHivUw9lThG4moIKdANK%2Fimg.jpg)
자바에서 Optional 클래스는 null이 될 수 있는 객체를 감싸는 래퍼 클래스이다. java.util.Optional는 자바 8에서 도입되었으며, NullPointerException을 방지하고, 명시적으로 변수가 null 값을 가질 수 있음을 표현할 수 있는 방법을 제공한다. 이를 통해 개발자는 보다 깔끔하고 의도가 명확한 코드를 작성할 수 있다. 기본 사용법Optional 객체를 생성하는 기본적인 방법은 Optional.of(value), Optional.ofNullable(value), 그리고 Optional.empty() 세 가지가 있다. Optional.of(value): null이 아닌 명시적인 값을 가지는 Optional 객체를 반환한다. 만약 인자로 넘긴 값이 null이라면, 즉시 N..
![[Java] static import](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdniixQ%2FbtsDRH84KCu%2FmAxXtci582IEsc7XIThdkK%2Fimg.jpg)
static import는 클래스의 정적 멤버(메서드와 필드)를 클래스 이름 없이 직접 사용할 수 있도록 해준다. 이를 통해 코드의 가독성을 높일 수 있지만, 과도하게 사용할 경우 어느 클래스에서 메서드나 필드가 정의되었는지 혼란을 줄 수 있다. 예를들어, static import를 사용하지 않는 경우, 예를 들어 Math 클래스의 sqrt 메서드를 사용하려면 클래스 이름을 명시해야 한다. double result = Math.sqrt(25); // Math 클래스의 sqrt 메서드 사용 static import를 사용하면, 메서드를 클래스 이름 없이 직접 호출할 수 있다 import static java.lang.Math.sqrt; ... double result = sqrt(25); // Math.s..
![[Java] Arrays.sort(), Collections.sort() Comparator, Comparable](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpg59s%2FbtsDqjHJmgE%2FrKPnFNC7DY7yIu26pcKEoK%2Fimg.jpg)
Arrays.sort()와 Collections.sort() Arrays.sort()와 Collections.sort()는 Java에서 배열과 컬렉션을 정렬하는 메서드이다. Arrays.sort() Arrays 클래스에 속한 정적 메서드로, 배열을 정렬할 때 사용한다. 주로 기본 타입 배열(int, double)을 정렬하는 데 사용된다. 정렬 알고리즘으로는 기본적으로 퀵 소트(QuickSort)가 사용되지만, Java 7 이후로는 퀵 소트와 병합 소트(MergeSort)가 혼합된 팀소트(TimSort)가 사용된다. Arrays.sort()는 인자로 넘겨받은 배열을 직접 수정하며, 반환값은 void이다. int[] arr = {5, 2, 9, 1, 5}; Arrays.sort(arr); Collection..