기본형의 한계
객체가 아니기 때문에 메서드를 제공할 수 없음
>>객체 참조가 필요한 컬렉션 프레임워크 사용 불가, 제네릭 사용 불가
null 값을 가질 수 없음
래퍼 클래스 (Wrapper Class)
특정 기본형을 감싸서(Wrap) 만드는 클래스
자바는 기본형에 대응하는 래퍼 클래스를 기본으로 제공
>> 불변이며 equals로 비교
래퍼 클래스 생성 - 박싱(Boxing)
기본형을 래퍼 클래스로 변경하는 것을 마치 박스에 물건을 넣은 것 같다고 해서 박싱이라 함
Integer.valueOf(...) : 내부에서 new Integer(...)을 사용해서 객체를 생성하고 돌려줌
Integer.valueOf()에는 성능 최적화 기능
>> 일반적으로 자주 사용하는 -128 ~ 127 범위의 Integer 클래스를 미리 생성, 해당 범위 값이 없으면 new Integer() 호출
>> 마치 문자열 풀과 비슷
intValue() - 언박싱(Unboxing)
래퍼 클래스에 들어있는 기본형 값을 다시 꺼내는 메서드
주요 메서드
유지보수 vs 최적화
유지보수하기 좋은 코드를 먼저 고민
>> 최신 컴퓨터는 매우 빠르기 때문에 메모리 상에서 발생하는 연산을 몇 번 줄인다 해도 실질적 도움이 되지 않는 경우
성능 최적화는 대부분 복잡함을 요구하고 더 많은 코드들을 추가로 만들어야 함
>> 최적화를 한다고 했지만 전체 애플리케이션의 성능 관점에서 보면 불필요한 최적화 가능성
웹 애플리케이션의 경우 메모리 안에서 발생하는 연산 하나보다 네트워크 호출 한번이 더 오래 걸림
>> 자바 메모리 내부에서 발생하는 연산을 줄이는 것 보다 네트워크 호출 한 번을 더 줄이는게 효과적
개발 이후에 성능 테스트를 해보고 정말 문제가 되는 부분을 찾아서 최적화!!
Class 클래스
클래스의 정보(메타데이터)를 다루는데 사용
주요 기능
타입 정보 얻기 : 클래스의 이름, 슈퍼클래스, 인터페이스, 접근 제한자 등과 같은 정보 조회
리플렉션 : 클래스에 정의된 메서드, 필드, 생성자 등을 조회하고, 객체 인스턴스를 생성하거나 메서드 호출 등의 작업
동적 로딩과 생성 : Class.forName() 메서드로 클래스를 동적으로 로드하고 newInstance()를 통해 새 인스턴스 생성
애노테이션 처리 : 클래스에 적용된 애노테이션(annotation)을 조회하고 처리하는 기능 제공
System 클래스
Math 클래스
Random 클래스
java.util 패키지 소속
'Java' 카테고리의 다른 글
Java / 중첩 클래스, 내부 클래스 (0) | 2025.02.27 |
---|---|
Java / 열거형 - ENUM (0) | 2025.02.25 |
Java / String 클래스 (0) | 2025.02.24 |
Java / 불변 객체 (0) | 2025.02.24 |
Java / Object 클래스 (0) | 2025.02.24 |