변수
1. 변수란?
2. 네이밍 규칙
- 대소문자 구분
- 숫자로 시작할 수 없음
- 변수명에 예약어는 불가
- 특수문자는 _와 $만 가능
- 상수는 모두 대문자
- 단어의 첫 글자는 대문자 ex)HelloWorld
- 영어로 작성
데이터 타입
1. 기본형 변수 (primitive Variable)
- 기본형은 8가지
- 4가지로 분류: 논리형, 문자형, 정수형, 실수형
a. 논리형 변수
- boolean: 1byte
-> 여기서 boolean이 1bit이 아닌 이유는 CPU가 메모리에 접근할 때, 보통 한번에 하나 이상의 byte를 읽거나 쓰기 때문이다.
b. 문자형 변수
c. 정수형 변수
- byte: 1byte, -128 ~ 127
- short: 2byte, -32,768 ~ 32,767
- int: 4byte, -2,147,483,648 ~ 2,147,483,647
- long: 8byte, 123L
d. 실수형 변수
- foalt: 4byte, 0.123F
- double: 8byte
2. 참조형 변수 (Reference Variable)
- 실제 값이 아닌 주소 값을 저장하는 변수
- 래퍼 클래스(Wrapper Class)
- 프로그래머가 직접 만들어서 사용
public class Person{
int name;
int age;
}
3. 기본형 변수와 참조형 변수의 저장 방식
- 기본형 변수: 실제 값이 저장
- 참조형 변수: 주소 값이 저장
| 기본형 변수 | 참조형 변수 |
|---|
 |  |
| Stack영역에 i라는 공간이 생성되고 실제 값이 저장 | new라는 명렁어에 의해 Heap영역에 할당한 크기만큼 새로운 공간을 만들고, 이 공간의 메모리 주소 값을 Stack영역에 저장. |
4. Stack 영역과 Heap 영역
- Stack: 정적으로 할당된 메모리 영역
- Heap: 동적으로 할당된 메모리 영역
래퍼 클래스 (Wrapper Class)
1. 래퍼 클래스란?
- java.lang 패키지의 클래스들 중 기본형(primitive type) 변수를 감싸는 클래스들이다.
- 기본형을 객체형으로 변환시켜줌
- 그럼 기본형은 왜 존재하는지? 성능 때문에 존재
2. 래퍼 클래스를 사용하는 이유
- null 처리 가능 -> SQL에서 용이하게 사용됨
- java.util 패키지의 클래스들은 참조형 변수만을 다룸
- 자료형은 참조형 변수만을 다룸
- 멀티쓰레딩에서 동기화를 지원하려면 참조형 변수가 필요함
3. 래퍼클래스 생성자

4. Number 클래스

5. 박싱과 언박싱
a. Boxing
int primitive = 20;
Integer wrapper = Integer.valueOf(primitive);
b. Unboxing
Integer wrapper = 30;
int primitive = wrapper.intValue();

6. 오토박싱과 오토언박싱
- JDK 1.5부터는 자바 컴파일러가 박싱과 언박싱이 필요한 상황에 자동으로 처리를 해줌
- 불필요하게 오토 박싱&언박싱을 사용하는 경우, 100만건 기준으로 약 5배의 성능 차이가 남
- 오토 박싱&언박싱이 일어나지 않도록 동일한 타입 연산이 이루어지도록 구현해야 함
// 오토 박싱
int i = 10;
Integer num = i;
// 오토 언박싱
Integer num = new Integer(10);
int i = num;
형변환 (Type Conversion)
1. 형변환이란?
- a타입을 b타입으로 바꾸는 것
- 값의 대입이나 연산을 할 때, 같은 타입끼리만 가능해서 형변환이 필요하다.
- boolean 제외
2. 형변환의 종류
a. 자동(묵시적) 형변환
- 프로그램 실행 도중에 컴파일러가 자동적으로 타입 변환
- 높은 자료형으로 맞출 때
- ex) int -> long

b. 강제(명시적) 형변환
- 사용자가 타입 캐스트 연산자 (double)135 를 사용하여 값의 타입을 강제적으로 변환
- 데이터 손실이 일어나는 경우, 정확한 연산이 안 됨
- 낮은 자료형으로 맞출 때
- ex) int -> short
3. 형변환 안전장치
- 기본 타입의 최대값(Type.MAX_VALUE)과 최소값(Type.MIN_VALUE)을 활용해, 범위 밖인지 확인 후 형변환한다.
참고 자료