728x90
+ 변수(variable) : 값을 저장할 수 있는 메모리 상의 공간
+ 자료형
- data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것
- 변수의 타입 = data type = 자료형
- 기본형(primitive type)
- 산술 연산 가능
- null 로 초기화 불가능
- 0으로 초기화 가능
- 기본형에는 다음과 같은 종류가 있습니다.
Wrapper Class | 자료형 | 데이터 | 메모리 크기 | 표현 가능 범위 |
Boolean | boolean | 참/거짓 | 1 byte | true, false |
Character | char | 문자 | 2 byte | 모든 유니코드 문자 |
Byte | byte | 정수 | 1 byte | -128~127 |
Short | short | 정수 | 2 byte | -32768~32767 |
Integer | int | 정수 | 4 byte | -2147483648~2147483647 |
Long | long | 정수 | 8 byte | -9223372036854775808~9223372036854775807 |
Float | float | 실수 | 4 byte | 1.4E-45~3.4028235E38 |
Double | double | 실수 | 8 byte | 4.9E-324~1.7976931348623157E308 |
Void | void |
2. 참조형(referece type)
- class
- interface
+ Wrapper Class
- 기본형을 객체로 표현하기 위해 사용하는 클래스
- 매개변수로 객체를 필요로 할 때 (제네릭 타입을 파라미터로 받을 때)
- 기본형 값이 아닌 객체로 저장해야할 때 (메소드에 전달된 파라미터를 수정하려는 경우)
- 객체 간 비교가 필요할 때
- 웹 서버의 경우 클라이언트에서 null 값이 왔을 때 기본 타입이면 예외가 발생하기 때문에
- Unboxing을 하지 않으면 직접적인 산술 연산이 불가능
- null값 처리가 용이해서 SQL 과 연동할 경우 처리가 용이
- java.lang 패키지에 포함
- 인스턴스에 저장된 값을 변경할 수 없다. 단지 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있다.
- 래퍼 클래스인 Interger 클래스와 Character 클래스에는 각각 언박싱을 위한 valueOf와 intValue 메서드가 있다.
- wrapper 클래스의 인스턴스, 즉 포장 객체는 내부의 값을 비교하기 위해 ==와 !=를 사용할 수 없다. 동등 연산자(==)를 사용하게 되면, 두 인스턴스의 값을 비교하는 것이 아니라 두 인스턴스의 주소값을 비교하게 되는데, 포장 객체는 내부 값이 아니라 참조를 비교하기 때문이다.이럴 땐 == 말고 equals() 메소드를 사용하면 된다. 하지만 포장 객체에 어떤 값이 들어갈지 확실하지 않는 상황이라면 동등연산자는 사용하지 않는 편이 좋겠다.
+ Boxing과 Unboxing
- boxing
- primitive type -> wrapper class 변환
- int to Integer
- Integer a = new Integer(10);
- unboxing
- wrapper class -> primitive type 변환
- Integer to int
- int b = a.intValue();
- JDK 1.5부터는 AutoBoxing, AutoUnBoxing을 자바 컴파일러가 자동으로 처리해줌
int vs Integer 차이점 정리
int | Integer |
primitive type | Wrapper Class |
산술 연산 가능 | Unboxing 하지 않으면 산술 연산 불가능 |
null로 초기화 불가 | null 값 처리 가능 |
'두두의 IT > Spring' 카테고리의 다른 글
static / final / 상수 (0) | 2023.04.18 |
---|---|
Builder와 Getter/Setter (0) | 2023.04.18 |
DAO, DTO, VO 차이 (0) | 2023.04.17 |
JUnit5 (0) | 2022.11.10 |
조회 빈이 2개 이상일 때 (0) | 2022.10.31 |