1. 자바 자료형
1) 원시 자료형
- 원시형은 메모리에 정확하게 형(Type) 크기만큼의 공간을 할당하고 그 공간을 오로지 값으로 채워 넣는다.
자료형 | 크기 | 설명 |
byte | 1바이트 | -2^7 ~ 2^7-1 |
1short | 2바이트 | -2^15 ~ 2^15-1 |
int | 4바이트 | -2^31 ~ 2^31-1 |
long | 8바이트 | -2^63~ 2^63 -1 |
float | 4바이트 | 4바이트의 실수를 표현 |
double | 8바이트 | 8바이트의 실수를 표현(자바의 기본 실수형) |
boolean | 1비트 | 참 또는 거짓 |
char | 2바이트 | 단일 문자를 저장 |
ex)
- 메모리 특정 영역에 4바이트를 할당하고, 그 곳에 7이라는 값을 채워 넣게 된다.
int a = 7;
2) 참조 자료형
- 원시형이 아닌 자료형
- 원시형은 자바 메모리 모델에서 훨씬 더 빠른 영역에 할당된다. 반면 참조형은 좀 더 느린 영역에 할당된다,
- 원시형은 자료형에 따라 크기가 제각각이며, 자료형의 크기만큼의 메모리만 할당된다. 반면 참조형은 일정한 크기의 메모리가 할당된다. 대신 크기가 훨씬 더 크다.
- 참조형은 메소드 호출을 통해 여러 편리한 작업을 수행할 수 있다.
- 원시형은 항상 값이 존재해야 하며, 널이 될 수 없다. 반면 참조형은 널이 될 수 있다.
- 컬렉션의 엘리먼트는 참조형만 가능하다.
- 원시형을 선언하는 키워드는 소문자로 시작하며, 참조형은 대문자로 시작한다.
래퍼 클래스 (Wrapper Class)
- 자바의 원시형과 이에 대응하는 참조형
원시형 | 참조형(래퍼 클래스) |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
ex)
//원시형 선언
int a = 7;
//첨조형 선언 가능(오토박싱)
Integer b =7;
2. 자바 컬렉션 프레임워크
1) List
- 순서대로 엘리먼트를 모아두는 모음집
- 순서대로 엘리먼트를 추출하거나 또는 임의의 위치를 추출할 수도 있으며 검색도 가능
ArrayList
- 리스트의 가장 기본이 되는 구현
- 동적 배열로 구현되어 있음
List<Integer> a = new ArrayList<>();
a.add(1);
a.add(2);
LinkedList
- 리스트를 연결 리스트로 구현한 자료형
- 이중 연결 리스트(Doubly Linked List)로 구현 되어 있음
List<Integer> b = new LinkedList<>();
b.add(1);
b.add(2);
2) Map
- Collection을 확장하지 않고 별도로 구현되어 있음
- 키/값을 모두 갖는 자료형
HashMap
- 기본적인 해시 테이블 구조의 자료형
- 입력 순서를 보장하지 않음
Map<String,Integer> a = new HashMap<>();
a.put("a",1);
a.put("b",2);
LinkedHashMap
- 입력 순서가 유지됨
TreeMap
- 값에 따라 순서를 정렬
- 내부적으로는 자가 균형 이진 탐색 트리인 레드-블랙 트리로 구현되어 있음
Map<String,Integer> b = new TreeMap<>();
b.put("a",1);
b.put("b",2);
- 맵 내부를 순회하여 추출할 때는 entrySet()을 이용해 내부의 키/값 형태를 Entry<K,V>를 지닌 집합 자료형, 즉 Set으로 만든 다음에 순회할 수 있음.
Map<String,Integer> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
//Map.Entry로 순회하여 내용 출력
for(Map.Entry<String,Integer> entry : map.entrySet()) {
System.out.println(entry.getKey()+" "entry.getValue());
3) Set
- List와 유사하지만 중복을 허용하지 않음
Set<Integer> a = new HashSet<>();
a.add(1);
a.add(2);
a.add(2);
//[1,2]
4) Queue
- 큐 자료구조 인터페이스
Deque
- 양쪽에서 삽입과 삭제를 처리할 수 있는, 스택과 큐의 특징을 모두 갖고 있는 인터페이스로 Queue를 확장해 정의되어 있음
3. 무한대 크기의 숫자를 저장할 수 있는 자료형
BigInteger
- 임의 정밀도(Arbitrary Precision) 정수
- 무제한 자릿수를 제공하는 정수형
- 정수를 숫자의 배열로 간주하여 큰 수를 보관
- BigInteger에서 지원하는 연산
연산 | 메소드 |
덧셈(+) | add() |
뺄셈(-) | subtract() |
곱셈(*) | multiply() |
나눗셈(/) | divide() |
나머지(%) | remainder() |
'Java > 알고리즘' 카테고리의 다른 글
[자바 알고리즘 인터뷰] 6장 문자열 처리(3) 로그 파일 재정렬 (0) | 2024.04.04 |
---|---|
[자바 알고리즘 인터뷰] 6장 문자열 처리(2) 문자열 뒤집기 (0) | 2024.04.03 |
[자바 알고리즘 인터뷰] 6장 문자열 처리(1) 유효한 팰린드롬 (0) | 2024.04.03 |
[자바 알고리즘 인터뷰] 5장 빅오 (0) | 2024.04.03 |
[자바 알고리즘 인터뷰] 2장 자바 (0) | 2024.03.22 |