다형성이란 말 그대로 다양한 형태를 가지고 있음을 뜻합니다. 자바에서 가르키는 다형성이란 객체가 다양한 형태를 띌 수 있다 를 뜻합니다. 요고는 아래 예시를 통해 확인하면 쉽게 이해할 수 있습니다.poly 라는 패키지 아래에 Parent, Child 클래스가 각각 존재
자바에서 instanceof 사용법이 많이 헷갈려서 정리를 해보고자 합니다. 추가적으로 왜 instanceof 를 사용해야 하는지도 같이 적어보겠습니다 :)다운 캐스팅 주의점instanceof 사용법다운 캐스팅 주의점: 자바에서 특히 다형성을 이용을 할 때, 부모 자식
자바 14부터는 새로운 switch문을 사용할 수 있습니다. 이번 포스팅에서는 더 깔끔해진 switch 문의 사용법에 대해서 간단하게 알아보겠습니다.출력 결과: 발급받은 쿠폰 2000기존에는 case에 따라서 coupon = 1000; break; 이런식으로 일일이 대
이번 포스팅에서는 컬랙션을 사용할때 가끔 등장하는 Iterator에 대해서 정리하고자 합니다. Iterator 는 주로 Set 컬랙션과 함께 set 의 데이터를 모두 확인하고자 할때 사용합니다. List 컬랙션은 인덱스를 통해서 접근이 가능하여 Iterator의 도움이
서버에서 파일을 관리할 때 클라이언트가 보낸 파일 이름 그대로 저장한다면 이미 있는 파일을 덮어 쓸 수 있다. 그래서 파일을 저장할때는 겹치지 않는 파일명으로 관리해야 한다. 그럴때 스프링이 제공하는 UUID를 활용하면 편하다.UUID.randomUUID().toStr
forEach 사용해서 객체 하나씩 꺼내기stream 에서 map 을 사용하여 타입을 변경시킬 수 있다.위의 예제에서는 Order 객체를 SimpleOrderDto 객체로 변환해 주기 위해서 map 을 사용했다.그리고 collect 를 사용해서 변환된 객체들을 하나의
Error vs ExceptionError: 메모리 부족 처럼 어플리케이션에서 복구 불가능한 예외 계층Exception: 개발자가 복구 가능한 예외가 포함된 계층 기본적으로 자바의 예외는 체크 예외와 언체크 예외로 나뉜다.체크 예외가 대부분이고 언체크 예외로는 Runt
문자열이 비었는지 null 인지에 대한 상태가 궁금하다면 아래와 같이 작성하도록 하자.ObjectUtils 는 isArray() , isEmpty, toObjectArray 등 다양한 메서드를 제공한다.isEmpty 구현된 내용을 살펴 보면 배열인 경우와 string
위 코드는 @NoArgsConstructor(access = AccessLevel.PROTECTED) 사용하면 완전히 동일하다.System.out.println("member = " + member); 만 해도 of = {...} 에서 설정해준 필드명 까지 함께 출력해
자바에서는 스코프라는 개념이 있다. 직역하면 범위라는 뜻인데, 이것이 어떠한 의미를 내포하는지 생각해보자.위의 코드는 m이 특정 조건을 만족하면 2배의 값을 일시적으로 출력하는 코드이다.여기서 스코프란 {} 코드 블럭 범주안에서만 정의된 변수에 접근할 수 있음을 의미한
자바는 자동 형변환과 명시적 형변환 기능을 제공한다. 하나씩 살펴보자.자바의 숫자 자료형에서는 int < long < double 순으로 더 숫자 범위를 포함할 수 있다. 이때 int의 값을 long이나 double에 대입할려면 어떻게 될까? (상대적으로)
자바에서 변수를 선언할 때 아래와 같은 에러 메시지를 본 경험이 여러번 있다.java: variable a might not have been initialized그때마다 아 변수 초기화 안해줬구나 하고 넘어갔지만, 근본적으로 왜 선언해놓고 초기화를 강제적으로 해줘야지
자바의 변수 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 직접 넣을 수 있는 기본형, 그리고 방금 본 배열 변수와 같이 메모리의 참조값을 넣을 수 있는 참조형으로 분류할 수 있다.기본형(Primitive Type): int lon
자바에서 배열은 같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다. 이는 참조형 데이터 타입으로써 배열은 참조 값을 보관한다.예시로 int\[] students = new int\[5] 를 선언한다면, new int\[5] 만큼 메모리를 확보하며 각 원소를 0으
두 변수를 더하는 기능을 여러번 수행한다고 하면 어떻게 효율적으로 프로세스를 수행할 수 있을까? 이때는 메서드 기능을 사용하면 된다. 메서드는 수학에서 함수의 한 종류라고 생각하면 된다.두 수를 더하는 메서드 와 세 수를 더하는 메서드 를 만든다고 해보자. 이때 기능이
만약에 내가 여러명의 학생 정보를 출력하는 프로그램을 작성한다고 해보자. 이때 각 학생은 이름, 나이, 성적을 가지고 있다. 만약에 클래스가 없다면 배열을 이용해서 정보를 표현할 것이다.만약에 정보가 추가된다면, 각 배열에 정보를 기입해주면 된다. 이때 데이터를 변경한
이 둘의 차이점을 명확하게 구분한다면, 객체지향에 대한 이해가 더욱 쉬워진다. 먼저 절차 지향은 말 그대로 절차를 지향한다. 즉, 프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 반면에 객체 지향은 말 그대로 객체를 지향한다. 이는 실제 세계의 사물이나 사건을
자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있다.메서드 영역: 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이러한 데이터에는 클래스, static, 상수등이 있으며, 메서드 영역은 모든 영역에서 공유한다.스택 영역: 자바 실
상속은 기존 클래스의 필드와 메서드를 새로운 클래스에서 재사용하게 해준다. 이름 그대로 기존 클래스의 속성과 기능을 그대로 물려받은 것이다. 이때 extends 키워드를 사용하면 되고, extends 대상은 하나만 선택할 수 있다. 아래의 예제를 살펴보자.부모가 되는