1. 개요BigDecimal은 금융 관련 연산 같이 오차가 발생해서 안되는 상황에 사용되는 타입이다. float, double과 BigDecimal을 간단하게 비교해보자(float과 double에 대한 자세한 내용은 여기를 참고하세요).내부 표현 방식:BigDecimal: 수를 정수(unscaled value)와 scale로 나눠서 표현한다. 예를 들어 1.23의 정수는 123이고 scale은 2다.float & double: 부동 소수점 표현에 따라 표현한다.정밀도:BigDecimal: 임의 정밀도(메모리의 제한 내에서 원하는 만큼의 정밀도)를 갖는다.float & double: 각각 32비트, 64비트 수로 표현하여 값의 범위나 정밀도에 제한이 있다.속도:BigDecimal: 무제한 숫자의 길이와 복..
1. 개요 SOLID 원칙은 로버트 C. 마틴이 발표한 5가지 객체지향 설계원칙의 약자다. 각 글자는 다음과 같은 원칙을 의미한다.SRP(Single Responsibility Principle): 단일 책임 원칙OCP(Open-Closed Principle): 개방 폐쇄 원칙LSP(Liskov Substitution Principle): 리스코프 치환 원칙ISP(Interface Segregation Principle): 인터페이스 분리 원칙DIP(Dependency Inversion Principle): 의존 역전 원칙이 원칙들의 목표는 응집도는 높이고 결합도를 낮추자는 고전 원칙을 객체지향 관점에서 재정의 한 것이다. 2. 응집도와 결합도응집도를 높이고 결합도를 낮추면 유연하고 유지보수하기 용이한 ..
1. 객체지향 프로그래밍이란?객체지향 프로그래밍이란 프로그램을 데이터와 데이터를 처리하는 행동(메소드)을 가진 객체의 집합으로 보는 프로그래밍 패러다임이다. 프로그래머는 객체의 설계도인 클래스를 통해 객체가 가져야 할 상태와 행동을 정의하고, 객체를 생성하고 조립하며 프로그램을 개발한다. 하나의 역할을 수행하기 위해 필요한 데이터와 메소드를 객체로 묶어 사용하기 때문에 재사용이 용이하고, 유연하며, 유지보수하기 쉽기 때문에 대규모 소프트웨어 개발에 사용된다.2. 객체지향 프로그래밍의 등장 배경프로그래밍 패러다임은 절차지향 프로그래밍 → 구조적 프로그래밍 → 객체지향 프로그래밍 순서대로 등장하였다. 각 패러다임은 이전 패러다임의 단점을 보완하기 위해 고안되었으며 이들의 특징은 다음과 같다.절차지향 프로그..
equals와 hashCode는 모든 클래스의 부모인 Object 클래스에 정의되어 있는 메소드다. 각 메소드는 다음과 같은 기능을 한다.equals: 두 객체가 같은지 비교하고 boolean을 리턴한다. 오버라이딩하지 않을 경우 두 객체의 주소값을 비교한다.hashCode: 객체의 고유값을 리턴한다. 오버라이딩하지 않을 경우 객체의 메모리 주소를 바탕으로 한 해시값을 리턴한다. 따라서 equals와 hashCode를 오버라이딩하지 않고 사용하면 객체의 속성값이 아닌 주소값을 비교한 결과를 리턴하게 된다.// Person 클래스public class Person { private String name; private int age; public Person(String name, int ..