프로그래밍 언어/Java
[Java] Comparable과 Comparator : 비교를 위한 인터페이스
Comparable 인터페이스Comparable은 자기 자신과 매개변수 객체를 비교할 수 있도록 만들어주는 인터페이스이다. 이 인터페이스를 채택하여 구현하면 compareTo 메서드를 통하여 객체간에 비교가 가능해진다.Comparable 인터페이스와 Comparator 인터페이스Comparable과 비슷한 기능을 하는 인터페이스로 Comparator가 있다. 둘의 차이점은 다음과 같다.1) 구현해야 하는 메서드의 차이Comparable은 compareTo(T o1)을 구현해야 한다.Comparator는 compare(T o1, T 02)를 구현해야 한다. 매개변수가 2개이다. 2) 사용 방법의 차이Comparable은 자기 자신과 다른 객체를 비교한다.Comparator는 매개변수로 들어오는 두 객체를 ..
[Java] Collections 클래스
collection vs Collection vs Collectionscollection)데이터나 집합이나 그룹, 객체가 저장되고 반복되는 자료구조 Collection인터페이스(java.util.Collection 프레임워크)Collection '프레임워크' 내에 있는 Collection '인터페이스'여러 요소들을 담기 위해 만들어졌기 때문에, Container 객체라고도 불림Set, List, Queue 인터페이스가 하위 인터페이스로서 있음ex) ArrayList : Collection 인터페이스 → List 인터페이스 → ArrayList 클래스로 구현을 하는 것Collectionsutility 클래스 (java.util.Collections 클래스)Collection인터페이스이며, Iterable을..
[Java] Generic 제네릭
사용법다이아몬드 연산자 ()에 타입을 정의해주면 되지만 명명 규칙이 존재한다.E : 요소(element)K : 키(key)N : 숫자(Number)T : 타입(type)V : 값(value)S, U, V : 2,3,4번째 선언된 타입장점컴파일 타임때 타입추론을 통한 타입에러를 사전에 잡을 수 있다.컴파일러가 타입추론을 통한 타입 캐스팅을 자동으로 해준다.코드의 재사용성이 매우 높아진다.컴파일 타임 때 타입 추론을 통한 타입 에러를 사전에 잡을 수 있다public interface List extends Collection {...} List를 사용할 때 우리는 다이아몬드 연산자 () 안에 어떠한 타입을 지정하고 사용한다. Java 7 버전 이후로 도입됐다.List string = new ArrayList..
[Java] BigDecimal
개념BigDecimal은 Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다.소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이 유실될 수 있다.Java 언어에서 돈과 소수점을 다룬다면 BigDecimal은 선택이 아니라 필수이다.BigDecimal의 유일한 단점은 느린 속도와 기본 타입보다 조금 불편한 사용법 뿐이다.double 문제점소수점 이하의 수를 다룰 때 double 타입은 사칙연산시 아래와 같이 우리가 기대한 값과 다른 값을 출력한다. 이유는 double 타입이 내부적으로 수를 저장할 때 이진수의 근사치를 저장하기 때문이다. 저장된 수를 다시 십진수로 표현하면서 아래와 같은 문제가 발생한다. 아래 설명할 BigDecim..
[Java] long float의 값 뒤에 L, F을 붙여야 하는 이유
long 타입으로 변수를 선언하고 값을 초기화 할 때에는 반드시 리터럴 뒤에 소문자나 대문자 L을 붙여주어야 한다. 아래 에러가 뜨는 이유는 2147483648 이라는 값은 변수 lo에 저장하기 전에 임시로 메모리에 저장되는데, 이때 사용하는 기본 데이터 타입이 int 이고 허용 범위를 초과하는 리터럴은 임시로 저장하는 과정에서 에러가 나는 것이다. 이것을 해결하려면 아래와 같이 리터럴 끝에 l을 붙여주면 된다. float도 비슷한 맥락의 이유로 에러가 난다. float의 데이터 값을 변수에 저장하기 전에 이 값을 메모리에 임시로 저장하는데, 이때 저장되는 타입이 double이다. double은 8 바이트의 데이터 타입이고, float는 4 바이트다. 1199.80이라는 수는 8바이트의 double 타입..
[Java] 자료형 정리
Data Type자바에는 기본형 (Primitive Type)과 참조형 (Reference Type)이 있다.Java Data Type ㄴ Primitive Type ㄴ Boolean Type(boolean) ㄴ Numeric Type ㄴ Integral Type ㄴ Integer Type(short, int, long) ㄴ Floating Point Type(float, double) ㄴ Character Type(char)ㄴ Reference Type ㄴ Class Type ㄴ Interface Type ㄴ Array Type ㄴ Enum Type ㄴ etc.Primitive Type기본형은 다음과 ..