10 Jul 2023 EffectiveJava
Item51에서 매개변수 타입을 클래스가 아니라 인터페이스를 사용하라고 했다. 이 의미는 “객체는 클래스가 아닌 인터페이스로 참조하라”고 까지 확장할 수 있다.
적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라. 객체의 실제 클래스를 사용해야 할 상황은 ‘오직’ 생성자로 생성할 때 뿐이다.
인터페이스...
10 Jul 2023 EffectiveJava
문자열 연결 연산자 (+)는 여러 문자열을 하나로 합쳐주는 편리한 수단이다.
한 줄짜리 출력값 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때라면 괜찮지만, 본격적으로 사용하기 시작하면 성능 저하를 감내하기 어렵다.
문자열 연결 연산자로 문자열 n개를 잇는 시간은 n²에 비례한다. 문자열은 불변이라서 두 문자열을 연결할 경우...
10 Jul 2023 EffectiveJava
문자열(String)은 텍스트를 표현하도록 설계되었고, 그 일을 아주 멋지게 해낸다.
그렇지만 문자열은 워낙 흔하고 자바가 또 잘 지원해주어 원래 의도하지 않은 용도로 쓰이는 경향이 있다.
이러한 사례를 정리해 보도록 하자.
적절하지 않은 문자열의 사용
문자열은 다른 값 타입을 대신하기 적합하지 않다.
많은 사람이 파일,...
10 Jul 2023 EffectiveJava
자바의 데이터 타입은 크게 두가지로 나누어 진다.
- 기본타입 : int, double, boolean…
- 참조타입 : String, List…
각각의 기본 타입에는 대응하는 참조 타입이 하나씩 있으며, 이를 박싱된 기본 타입이라고 한다. int, double, boolean에 대응하는 박싱된 기본타입은 Integer, Double, Boolean 이다.
박싱된 기본타입
오토박싱과...
09 Jul 2023 EffectiveJava
float와 double 타입은 과학과 공학 계산용으로 설계되었다. 이진 부동소수점 연산에 쓰이며, 넓은 범위의 수를 빠르게 정밀한 ‘근사치’로 계싼하도록 세심하게 설계되었다.
정확한 결과가 필요할 때는 사용하면 안 된다. float와 double 타입은 특히 금융 관련 계산과는 맞지 않는다. 0.1 혹은 10의 음의 거듭 제곱 수(10⁻¹, 10⁻² 등)를...