래퍼클래스 (Wrapper)
- 각각의 기본 타입에 상응하는 클래스
- 객체 불변성을 가진다.
Types
Wrapper : Boolean, Byte, Character, Double, Float, Integer, Long, Short
Pfimitive : boolean, byte, char, double, float, int, long, short
- String 은 래퍼클래스가 아니다. (대응되는 기본 데이터 유형을 가지고 있지않음)
래퍼클래스가 필요한 이유
- 추가적인 기능들을 다양하게 사용가능하다.
- 유틸리티 메소드 제공
- 기본값을 컬렉션에 저장 가능하다. (컬렉션에 대상을 추가할 때 대상은 객체여야 하고 래퍼클래스가 기본값에 객체를 제공함)
래퍼클래스 객체 생성방법
1) 생성자 이용
- Integer num = new Integer(8);
2) valueOf 스태틱메소드 이용
- 각각의 래퍼 클래스에서 모두 해당 메소드 있음
- Integer num = Integer.valueOf(8);
- Integer num = 8; (해당 방법은 AutoBoxing으로 valueOf를 이용해 변환한 내용이다.)
1), 2) 비교
- num ~ num4 모두 객체를 생성한 것이라 변수에 참조주소를 가지고 있을텐데 왜 num3, num4는 true가 나올까?
모든 래퍼클래스는 불변성을 가진다. (객체를 변경하지 않는 이상 값이 지정된 이후에는 연산이나 메소드에 의해 값이 변경될 수 없음)
valuOf는 위 불변성을 고려하여 Heap안에 같은 값을 가진 객체가 있다면 재사용하고 동일한 결과를 낸다.
AutoBoxing
- 래퍼클래스의 객체가 입력되야 하는 곳에 기본 타입의 값을 넣어주면 컴파일러가 알아서 래퍼로 변환시켜 주는 것
- java 5에서 새롭게 나온 기능
'자바' 카테고리의 다른 글
[Java] Array 와 ArrayList (1) | 2024.10.04 |
---|---|
[Java] Date 타입 (LocalDate, LocalDateTime, LocalTime) (0) | 2024.10.02 |
[Java] String (0) | 2024.09.30 |
[Java] 기본형, 참조형데이터 (0) | 2024.09.27 |
[Java] 생성자 (0) | 2024.09.27 |