devnoong.log
[JAVA] Public Static 생성자 개념 및 문제점 , static 블록 이용하기
JAVA 2023. 4. 14. 11:18

1. Public Static 생성자 란? Public Static 생성자는 클래스가 로드 될때 자동으로 실행되며, 클래스에 대한 초기 작업을 수행하는데 사용합니다. 이는 static 멤버 변수를 초기화하거나, 다른 static 메소드를 호출하여 클래스의 기능을 준비하는 작업을 수행합니다. 따라서, Public Static 생성자는 인스턴스 생성과는 무관하며, new 연산자를 통해 인스턴스를 생성하지 않습니다. 대신에 인스턴스를 생성하지 않고도 호출 할 수 있는 static 멤버 변수 또는 static 메소드를 사용 생성합니다. 2. Public Static 생성자 문제점 하지만 일반적으로 아래의 이유로 Public Static 생성자를 사용하지 않고 있습니다. ① 인스턴스를 생성 할 수 없음 Publi..

[JAVA] Collectors 인터페이스 개념 및 사용법
JAVA 2023. 4. 12. 16:04

Stream에 많이 사용되는 Collectors에 대해 알아보는 시간을 가져보도록 하겠습니다. 1. Collectors 인터페이스란? Collector 클래스는자바스트림 API에서 제공하는 기능 중 하나로, Stream에서 수행한 연산 결과를 수집하여 다양한 형태의 컬렉션을 반환할 수 있는 정적 메소드를 제공하는 클래스이다. Collectors를 사용하면 요소들을 적절하게 그룹화,분할,집계,변환 할 수 있지만, 이를 위해서는 추가적인 객체 생성이 필요하다. 따라서 스트림의 크기가 작은경우나, 간단한 작업을 처리할때는 Collectors 를 사용하지 않고 직접 구현하는것이 더 효율적이다. 하지만, 스트림의 크기가 크고 복잡한 작업을 수행할 때는 Collectors를 사용하면 코드의 가독성과 유지보수성이 향..

[JAVA] ENUM 클래스 개념 및 사용법
JAVA 2023. 4. 11. 10:29

Java에서 주로 사용되는 enum에 대해 정리해보는 시간을 가져보도록 하겠습니다 1. ENUM이란? 자바 1.5버전부터 새롭게 추가된 열거형 상수로, 서로 연관된 상수들의 집합으로 상수 값을 정의하고, 그 외의 값은 허용하지 않는다. enum이 존재하기 전에는 아래와 같이 static final 을 이용하여 모두 상수로 선언해서 사용했었다. public static final String MON = "Monday"; public static final String TUE = "Tuesday"; public static final String WED = "Wednesday"; 추가로 같은 의미를 가지는 상수들끼리 묶어서 class or interface로 구현체를 만들어서 사용했으나, 해당 방법은 서로 ..

[JAVA] 상속 클래스 (super 키워드 관련)
JAVA 2023. 4. 6. 15:13

상속 클래스 관련해서 간단하게 정리하고자 포스팅을 남깁니다. 자바에서는 extends를 통해 클래스를 상속받을 수 있다. 자바에서 클래스를 상속받을때, 하위 클래스는 상위클래스의 모든 멤버(필드,메서드 등)을 상속받는다. 하지만 부모 클래스의 생성자는 상속되지 않고 있으므로 부모클래스의 생성자를 하위 클래스에서 super 키워드를 통해 명시적 호출 후 초기화를 진행해줘야 한다. 부모클래스에 기본생성자가 존재할 경우에 super 키워드를 사용하지 않아도 자동으로 적용된다. Q. 부모 클래스에 생성자가 없을 경우 ? 부모클래스에 생성자가 존재하지 않을 경우에 컴파일러가 자동으로 기본 생성자 (매개변수가 없는 생성자) 를 생성해 런타임 오류가 발생하지 않도록 조치를 해준다. 대신 컴파일러가 무조건 기본 생성자..

article thumbnail
[JAVA] LocalDate Private 생성자 선언 이유
JAVA 2023. 3. 6. 17:51

JAVA 8 Date API 에서 출시된 LocalDate는 이전에 사용되었던 Calendar 클래스 대체 용도로 많이 사용되고 있습니다. LocalDate는 인스턴스 객체를 생성해주는 new 연산자를 사용하지 않고, of(), now(),parse() 와 같은 Public 정적 패토리 메소드를 이용해 선언되고 있습니다. new연산자를 사용 할 수 없는 이유는 생성자가 아래와 같이 Public이 아닌 Private로 구성되어있기때문입니다. 여기서 하나의 궁금증이 생기지 않나요? 왜 Public으로 생성자를 만들지 않고 Private으로 선언 해 놓았을까???? 이유는 아래와 같습니다. 첫번째, 불필요한 객체 생성을 제한하기 위해서 설정해놓는다. localDate에서 제공하는 함수들중 일부분은 정적메소드(..

article thumbnail
[JAVA] 프로그래머스 Level 1 - 옹알이(2) 풀이 과정
코테/프로그래머스 2023. 2. 22. 20:48

프로그래머스 Level 1 옹알이(2) JAVA 풀이 과정 머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 초반에 substring을 이용하여 아래와 같이 시도하였으나, substring으로 해당 글자 순서가 아니면 존재하는 문자를 체크를 못한다는 단점이 존재했다. int answer = 0; List avaivable = Arrays.asList(new Strin..

[JAVA] 프로그래머스 Level1 푸드 파이트 대회 풀이
코테/프로그래머스 2023. 2. 22. 19:51

프로그래머스 Level 1 푸드 파이트 JAVA 풀이 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위..

[JAVA] 프로그래머스 Level 1 - 가장 가까운 같은 글자 풀이법
코테/프로그래머스 2022. 12. 16. 16:10

프로그래머스 Level 1 가장 가까운 같은 글자 JAVA 풀이 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표..

article thumbnail
[JAVA] 자료구조 스택(STACK) 클래스 사용해보기
JAVA 2022. 12. 1. 10:16

스택(Stack) 은 영어사전 단어 의미로 쌓다라는 의미를 뜻합니다. 쌓아서 최 상단에 있는 부분을 먼저 빼는 형식으로 선출후입(LIFO) 이라고 표현합니다. 자바의 Stack클래스는 기본적으로 아래에 보이는 5가지의 함수를 제공해주고 있습니다. 자바에서 제공해주는 Stack 클래스를 사용해 살펴보도록 하겠습니다. public Element push(Element item); //stack 최 상단에 데이터 insert public Element pop(); //stack 최 상단 데이터를 제거 public Element peek(); //stack 최 상단 데이터를 출력 public boolean empty(); //tack이 비어있으면 true, 비어있지 않으면 false 로 반환 public int..

article thumbnail
[SPRING] 싱글톤에 대해서
WEB/BACKEND 2022. 7. 28. 08:41

싱글톤이란? 소프트웨어 디자인 패턴에서 사용하는 패턴으로 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 즉, 클래스의 인스턴스가 하나만 생성되는것을 보장하며 인스턴스에 접근할 수 있는 전역적인 접촉점 을 제공해 하나의 인스턴스를 통해서만 접근이 가능하도록 제어하는 패턴이다. 싱글톤 사용 이유 요청이 엄청나게 많은 트래픽 사이트에서는 계속 객체를 생성하게 되면 메모리 낭비가 심하기 때문에 대규모 트래픽과 요청을 처리 할 수 있도록 사용한다. 사용 전 public class AppConfig { public SingleTone singleToneTest(){ return new SingleTone(); } } @Te..