개발 지식
-
[Java] 가변인자 (varargs)개발 지식/Java 2023. 11. 15. 14:00
가변인자란? - jdk 1.5부터 지원하는 기능으로 매개변수의 개수를 동적으로 지정해 줄 수 있게 하는 기능을 의미한다. - 가변인자는 타입... 변수명 과 같은 형식으로 선언한다. 가변인자의 특징 - 가변인자는 매개변수 중에서 가장 마지막에 선언해야 한다. (마지막이 아닌 경우 구별할 수 없기 때문) - 인자가 아예 없는 경우와 배열을 인자로 받는 경우도 가능하다. - 내부적으로 배열을 이용하기 때문에 선언된 메서드를 호출할 때마다 배열이 새로 생성된다. - 오버로딩시 애매한 상황이 발생할 수 있기 때문에 가급적 오버로딩하지 않는 것이 좋다. public class Main { public static void main(String[] args) { System.out.println(concatenat..
-
[Java] 배열과 List 사이의 변환개발 지식/Java 2023. 11. 15. 12:10
배열 -> List - 아래의 1번과 2번 방식에서 Arrays.asList를 List.of로 변경하여도 동작하지만 조금의 차이가 발생한다. - 둘의 차이점은 아래의 글에 정리해두었다. https://prospective-developer-seo.tistory.com/111 [Java] Arrays.asList()와 List.of()의 차이 공통점 - 매개변수로 가변인자를 받아서(여러 요소나 배열도 가능) list를 반환한다. - 리스트의 크기를 변경할 수 없다. 차이점 변경 가능 여부 - Arrays.asList()로 반환된 list는 변경이 가능하지만 Li prospective-developer-seo.tistory.com 1. Arrays.asList(array) - 이 경우 고정길이의 List가 ..
-
[Java] Arrays.asList()와 List.of()의 차이개발 지식/Java 2023. 11. 15. 12:08
공통점 - 매개변수로 가변인자를 받아서(여러 요소나 배열도 가능) list를 반환한다. - 리스트의 크기를 변경할 수 없다. 차이점 변경 가능 여부 - Arrays.asList()로 반환된 list는 변경이 가능하지만 List.of()에서 반환된 list는 변경이 불가능하다. - 그 이유는 Arrays.asList()는 Arrays의 내부 클래스인 ArrayList를 반환하고, 여기에는 set 등이 구현되어 있지만 List.of()는 ListN이라는 타입의 객체를 반환하는데, 이는 불변 객체(Immutable object)이기 때문에 수정할 수 없다. (ListN 타입은 정확하게는 ImmutableCollections.ListN 타입이다) Null 허용 여부 - Arrays.asList()는 null을..
-
[JPA] Entity 클래스의 @NoArgsConstructor(access = AccessLevel.PROTECTED)개발 지식/JPA 2023. 11. 7. 16:52
Entity가 기본생성자를 필요로 하는 이유 - JPA는 DB 값(레코드)을 자바 객체로 매핑할 때 Reflection을 이용한다. - Reflection이란 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 Java API이다. - JPA에서는 자바 객체로 매핑할 때 기본생성자를 통해 먼저 객체를 만들고나서, Reflection을 통해 필드 값을 주입한다. - 따라서 Entity에는 기본생성자가 필요하고 기본생성자가 없다면 예외가 발생한다.(InstantiationException) Proxy 객체란? - 상속을 이용해 특정 객체를 한 번 감싸 이전, 이후에 특정 로직을 추가하도록 하는 개념이다. - JPA의 fetch 타입을 LAZY(지연로딩)으로 할 ..
-
[Java] 정규표현식(Regular Expression, regex)개발 지식/Java 2023. 7. 27. 14:56
정규표현식이란? 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어 정규표현식 문법 정규표현식 설명 ^ 문자의 시작(한 줄 기준) $ 문자의 끝(한 줄 기준) . 모든 문자 \\w 문자만 허용(여기서 문자는 영문, 숫자 _를 의미) \\W 문자가 아닌 경우에만 허용 \\d 숫자만 허용 \\D 숫자가 아닌 경우에만 허용 \\s 공백 문자만 허용 \\S 공백 문자가 아닌 경우에만 허용 \\b 문자와 문자가 아닌 것의 경계 \\B \\b와 반대로 동작 * 앞의 대상이 0개 이상 + 앞의 대상이 1개 이상 ? 앞의 대상이 0개 또는 1개 {n} n개 {n,} n개 이상 {n, m} n개 이상 m개 이하 () 특정 그룹 [a-zA-Z] 괄호안의 어떤 문자든 [^a-z] 괄호안의 문자들은 제외 특수한..
-
[Java] 인텔리제이 단축키 모음개발 지식/Java 2023. 7. 2. 18:58
윈도우 기준 일단 자주 쓰는 것들만 모아둠 1. Ctrl + Shift + Enter : 세미콜론, 중괄호 등의 자동완성 기능 2. Ctrl + Alt + v : 리턴타입 변수명 자동생성 기능 3. Ctrl + Alt + 방향키(왼쪽, 오른쪽) : 이전의 마우스 커서 위치로 이동 4. Ctrl + 좌클릭 : 해당 클래스로 이동 5. Ctrl + Shift + 방향키(위, 아래) : 해당 위 아래 라인의 코드 위치 서로 변경 6. Ctrl + Shift + Alt + t : Refactor this 옵션 창 제공 7. Ctrl + Alt + n : inline variable 적용 추가사항 앞으로 지속적으로 업데이트 하기!
-
[Java] static, final 키워드를 class에 사용하는 경우개발 지식/Java 2023. 6. 18. 18:27
1. final - final 키워드를 class에 사용하는 경우에 해당 클래스는 더이상 상속을 통한 확장이 불가능하게 된다. 2. static - static 키워드의 경우 외부 클래스에는 사용이 불가능하며 내부 클래스에서 사용할 수 있다. - static 중첩 클래스의 경우 외부 클래스 생성없이 직접 객체를 생성할 수 있다. - static 중첩 클래스의 장점으로는 외부 클래스와 연관된 클래스들을 내부에 grouping 할 수 있다. 3. static final - static 중첩 클래스와 같이 외부 클래스 생성없이 직접 객체를 생성할 수 있으며 해당 클래스는 더이상 상속이 불가능하게 된다.
-
[Java] static, final, static final의 차이개발 지식/Java 2023. 6. 18. 17:11
1. static - 객체 생성 없이 필드와 메서드를 사용하고자 할 때 - 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드 선언 시 - 정적 메서드는 객체 생성 없이 바로 사용할 수 있는 특징 때문에 인스턴스 필드나 메서드, 그리고 this 키워드를 사용할 수 없다. 2. final - 수정이 불가능하다는 의미 - final 필드에 값을 저장하는 방법에는 두 가지가 있다. public class Shop { final int closeTime = 21; final int openTime; public Shop(int openTime) { this.openTime = openTime; } } - 선언과 동시에 할당하는 법과 생성자를 통해 주입하는 방법이 있다. - 생성자를 통해 주입하는 방법..