전체 글 72

[Java] instanceof vs isInstance()

instanceof과 isInstance()모두 객체의 클래스를 확인하는데 사용합니다. 하지만 클래스의 체크 시점이 정적(컴파일 타임)이냐 동적(런타임)이냐의 차이를 보입니다. 즉, instanceof는 컴파일타임에 타입 에러를 체크하고, isInstance()는 런타임에 타입 에러 체크를 합니다. isInstance() 사용 예 // Java program to demonstrate working of isInstance() // method public class Test { // This method tells us whether the object is an // instance of class whose name is passed as a // string 'c'. public static bo..

Study/Java 2021.03.11

[우아한테크코스 3기] 레벨 1 - 5주차 회고

한 주 명언 “The best way to predict your future is to create it - Peter Drucker" - 미래를 예측하는 가장 좋은 방법은 미래를 창조하는 것이다. 미래엔 지금보다 더 잘할 수 있을까? 생각하게 되는 한 주였습니다. 고민보다, 하루하루 차근차근 나아가는 것이 알 수 없는 미래를 예측하는 가장 쉬운 길이라 느껴집니다. 5Fs란? 1. Facts(한 것) 실제로 했던 일이나 겪었던 일의 사실을 적습니다. 2. Feelings(느낀 것) 일을 하거나 겪으면서 느꼈던 감정이나 느낌을 적습니다. 3. Findings(배운 것) 일을 하거나 겪으면서 새롭게 배운 점이나 알게 된 점을 적습니다. 4. Future Actions(할 것) 배운 점을 토태로 이후엔 어떻..

[Java] 정적 팩토리 메서드 장단점과 사용시기

정적 팩토리 메소드의 특징 정적 팩토리 메소드의 장점은 곧 특징이 돼요. 크게 4가지의 장점이 있어요. 장점 이름이 있으므로 생성자에 비해 가독성이 좋다. 호출할 때마다 새로운 객체를 생성할 필요가 없다. 하위 자료형 객체를 반환할 수 있다. 형인자 자료형 객체를 만들 때 편리하다. 단점으로는 2가지가 있는데요. 단점 정적 팩토리 메서드만 있는 클래스라면, 생성자가 없으므로 하위 클래스를 못 만든다. 정적 팩토리 메서드는 다른 정적 메서드와 잘 구분되지 않는다. (문서만으로 확인하기 어려울 수 있음) 장, 단점을 알면, 이제 도대체 언제 써야하는지 알아야겠죠? 그전에 매번 헷갈리는 정적 팩토리 메소드의 네이밍 컨벤션을 조금 살펴보고 가야할거 같아요. 정적 팩토리 메소드 네이밍 컨벤션 from: 하나의 매..

Study/Java 2021.03.10

[Java] 상속은 캡슐화를 깨뜨린다?

public class Car{ private final String name; Car(String name) { this.name = name; } public final String getName() { return name; } } public class Avante extends Car{ Avante(String name) { super(name); } public void print() { System.out.println(getName()); } } 현재와 같이 부모 객체(Car)의 멤버변수가 private이고 메서드가 public final로 되어있는 상태에서도, 상속때문에 캡슐화가 깨졌다고 볼 수 있는건가? → 그렇지않다.현재 부모객체의 것들을 자식객체가 변경하지 못한다 (final 메소드..

Study/Java 2021.03.06

[우아한테크코스 3기] 레벨 1 - 4주차 회고

한 주 명언 "if you want something new you have to stop doing something old - Peter Drucker" - 새로운 것을 원한다면 오래된 것을 그만둬야합니다. 코니라는 좋은 리뷰어를 만나. 지금까지 가지고 있던 습관들은 전체적으로 바꾸는 연습을 했던 헌 주였습니다. 가지고 있던 오래된 습관들을 버리는 것은 힘이 듭니다. 하지만 낡은 것들을 놓지 않는다면 새로운 것을 얻을 수 없습니다. 5Fs란? 1. Facts(한 것) 실제로 했던 일이나 겪었던 일의 사실을 적습니다. 2. Feelings(느낀 것) 일을 하거나 겪으면서 느꼈던 감정이나 느낌을 적습니다. 3. Findings(배운 것) 일을 하거나 겪으면서 새롭게 배운 점이나 알게 된 점을 적습니다. ..

[Java] 컬렉션 프레임워크(Collections Framework)

[Java] 컬렉션 프레임워크(Collections Framework) 자료구조의 분류 자료구조 분류법은 많은 분류법이 있지만, 대표적으로 많이 분류되는 방법은 선형 자료구조(Linear Data Structure)과 비선형 자료구조(Nonlinear Data Structure)로 나눌 수 있습니다. 이러한 분류를 보통 '형태에 따른 자료구조'라고 보고, 각 자료구조에 알맞게 구체화 된 것들을 '구현된 자료구조'라고 합니다. 먼저 선형 자료구조(Linear Data Structure)에 대해 알아보면, 선형 자료구조는 쉽게 생각해서 데이터가 일렬로 연결된 형태라고 보면 됩니다.. 우리가 흔히 쓰는 int[] 배열같은 것이라 생각하면 됩니다.. 선형 자료구조는 대표적으로 리스트..

Study/Java 2021.02.28

[Live-Study] 상속

목표 자바의 상속에 대해 학습하세요. 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 더블 디스패치 추상 클래스 final 키워드 Object 클래스 이제야 반을 온 것 같습니다. (사실 아직 반도 안왔지만) 자주쓰는 상속의 개념인데 제대로 한번 정리해봣나 싶긴 합니다 ㅎㅎ 이번 기회에 자바의 상속에 대해 한번 제대로 알아보겠습니다. 자바 상속의 특징 상속(Inheritance) 부모가 소유하고 있는 재산의 일부를 자식이 물려받는 것을 생각해보면, 부모가 가진 것을 자식이 마음대로 쓰거나 그대로 쓰거나 선택할 수 잇습니다. 즉, 자식 클래스가 부모 클래스의 변수와 메소드를 물려 받아 쓰는 것입니다. 상속의 장..

Study/Live-Study 2021.02.25

[우아한테크코스 3기] 레벨 1 - 3주차 회고

한 주 명언 “One must live the way one thinks or end up thinking the way one has live” — paul Bourget - 생각하는 대로 살지 않으면 사는 대로 생각하게 된다. 1주알 안에 이렇게 많은 지식을 배울 수 있나 생각하게 되는 한 주였습니다. 많은 것을 배웠고, 또 느낀 한주 였습니다. 5Fs란? 1. Facts(한 것) 실제로 했던 일이나 겪었던 일의 사실을 적습니다. 2. Feelings(느낀 것) 일을 하거나 겪으면서 느꼈던 감정이나 느낌을 적습니다. 3. Findings(배운 것) 일을 하거나 겪으면서 새롭게 배운 점이나 알게 된 점을 적습니다. 4. Future Actions(할 것) 배운 점을 토태로 이후엔 어떻게 유지하고 개선할..

[Live-Study] 클래스

목표 자바의 Class에 대해 학습하세요. 학습할 것 (필수) 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 마감일시 2020년 12월 19일 토요일 오후 1시까지. 과제 (Optional) int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요. int value, Node left, right를 가지고 있어야 합니다. BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요. DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요. 늦게 시작한 감이있어 빠르게 하려하니 집중이 안되고, 정리도 대충하게 되는 ..

Study/Live-Study 2021.02.18

[우아한테크코스 3기] 레벨 1 - 2주차 회고

한 주 명언 “You can never plan the future by the past.” —Edmund Burke - 과거로는 미래를 계획할 수 없습니다. 이번주는 설날이 겹쳐있어 실제로 공부한 양이 그렇게 많지 않습니다..ㅠㅠ 많이 쉬었으니, 다시 시작하는 마음으로 열심히, 꾸준히 해봐야겠습니다. 5Fs란? 1. Facts(한 것) 실제로 했던 일이나 겪었던 일의 사실을 적습니다. 2. Feelings(느낀 것) 일을 하거나 겪으면서 느꼈던 감정이나 느낌을 적습니다. 3. Findings(배운 것) 일을 하거나 겪으면서 새롭게 배운 점이나 알게 된 점을 적습니다. 4. Future Actions(할 것) 배운 점을 토태로 이후엔 어떻게 유지하고 개선할 것인지 적습니다. 5. Feedbacks(시간이..

[우아한테크코스 3기] 레벨 1 - 1주차 회고

5Fs 시작. 회고하는 방법을 제대로 알지 못해 회고에 대한 두려움과 불안함이 먼저 다가왔었습니다. 하지만 멈춰 있을 수 만은 없는법! 교육과정 중 회고법에 대한 블로그를 공유받게 되어 의시적으로 연습해보려 합니다. 5Fs란? 1. Facts(한 것) 실제로 했던 일이나 겪었던 일의 사실을 적습니다. 2. Feelings(느낀 것) 일을 하거나 겪으면서 느꼈던 감정이나 느낌을 적습니다. 3. Findings(배운 것) 일을 하거나 겪으면서 새롭게 배운 점이나 알게 된 점을 적습니다. 4. Future Actions(할 것) 배운 점을 토태로 이후엔 어떻게 유지하고 개선할 것인지 적습니다. 5. Feedbacks(시간이 지난후 결과) 적절한 기간 이후 (저는 1달로 정함) 결과가 어떘는지 적습니다. 1. ..

[SpringBoot] 커스텀 애노테이션으로 Password규칙 적용하기

스프링 프레임워크가 기본적으로 제공하는 Validator이외의 Validator를 구현해야할 순간이 있습니다. 스프링은 컨트롤러에서 클라이언트에서 넘겨받은 값에 대한 검증을 JSR-303 기반으로 쉽고 강력하게 할 수 있습니다. 또 한 커스텀 한 어노테이션을 쉽게 구현할 수 있고 확장도 용이합니다. 애노테이션을 직접 만들기 위해서는 2가지 클래스가 필요합니다. @interface 클래스, ConstraintValidator의 구현 클래스 아래에서 작성하는 어노테이션은 해당 Password가 유효한지 검사를 하는 애노테이션입니다. 애노테이션 정의 import javax.validation.Constraint; import javax.validation.Payload; import java.lang.anno..

Study/SpringBoot 2021.01.28