java.lang패키지에 대해 한번 아라 보겠습니다!
자바는 기본적으로 다양한 패키지를 지원합니다. 그중에서도 가장 중요한 패키지인 자바 랭 패키지가 존재하고 있습니다.
패키지의 클래스는 import를 하지 않고도 사용할 수 있습니다.
자바 lang 패키지를 한번 살펴보겠습니다.
api의 패키지 영역에 보시면 javalan이라고 하는 패키지가 보이실 겁니다.
해당 패키지를 선택하시면 아래쪽 영역에 이 패키지가 가지고 있는 요소들을 볼 수 있습니다.
인터페이스들 클래스들 아래로 내려가시면 enums, Exception 이러한 부분들이 존재하고 있습니다.
이런 자바 lang 패키지에는 아래와 같은 클래스들이 존재합니다. 이 부분을 기억하면 도움이 될 것 같습니다.
- 기본형타입을 객체로 변환시킬 때 사용하는 Wrapper클래스
- 문자열과 관련된 String, StringBuffer, StringBuilder도 모두 java.lang패키지
- System클래스도 java.lang패키지
- Boolean, Byte, Short, Integer, Long, Float, Double 클래스
- 모든 클래스의 최상위 클래스인 Object도 java.lang패키지
- Math클래스도 java.lang패키지
- Thread와 관련된 중요 클래스들 포함
이외에도 다양한 클래스와 인터페이스가 java.lang패키지에 속해 있으니 이를 적극적으로 활용해 볼 수 있겠습니다.
- 오토박싱(Auto Boxing),오토 언박싱(Auto unboxing) 은 JAVA 5부터 지원한다.
이 때 내부적으로 Wrapper클래스들이 사용된다
테스트
예제들을 살짝 살펴보면서 더 설명을 해보도록 하겠습니다.
int형 변수 i를 하나 선언하고요 integer 객체 이렇게 하나 선언해보도록 하겠습니다.
아까 잠깐 Wrapper 클래스예요라고 설명을 했었는데요.
inti는 기본형 타입이고요 intzer i2는 실제 int를 객체로 바꿔주는 Wrapper 클래스 중에 하나인 intse라는 클래스입니다.
i는 기본형 타입이기 때문에 객체가 아닙니다. 참조형이 아니라는 의미죠
만약 숫자 5를 객체형 혹은 참조형으로 사용하고 싶다면 i2처럼 선언해야지 사용할 수 있습니다.
반드시 이렇게 사용했었어야 했는데요.
다음 문장을 보시면 integer i3을 하나 선언해볼게요 이때
그냥 기본 data type 5를 넣었는데요.
전혀 문제없이 작동하고 있는 것을 볼 수 있습니다.
숫자 5는 원래 기본형이지만 자동으로 intzer로 형 변환된 상태입니다.
이것을 오토 박싱이라고 하니다. java 5 버전 이후부터는 그런 식으로 코드를 작성하지 않아도 다시 설명하자면 2처럼 작성하지 않고 i3처럼 작성해도 사용할 수 있습니다.
이런 기능을 오토 박싱이라고 이야기합니다.
사용자는 편하게 i=5 하고 넣지만 실제 컴파일러는 이 부분을 newintegeo 하는 코드로 바꾸어서 동작해요.
자동으로 감싸준다고 해서 오토박싱이라고 기억하시면 될 거고요.
마찬가지 꺼내올 때도 int 형 변수 i 4 이렇게 하나 선언해볼게요 이 부분에 있는 것을 integer type i3에 들어있는 값을 int type으로
바꾸고 싶어요. 이랬을 때는 반드시 이런 intValue 같은 메서드를 이용해야지만 객체로 감싸져 있는 것을 한번 벗겨내고 int type으로 사용할 수가 있습니다.
그런데 자바 5 이후부터는 이런 식으로 intValue라는 메서드를 호출하지 않아도 바로 꺼내서 사용할 수 있습니다.
이렇게 되는 것을 오토박싱이라고 하고요 이 부분도 마찬가지 내부적으로 이런 이제 래퍼 클래스들을 사용해서 컴파일러가 자동으로 해당 메서드를 호출해서 한번 벗겨내서 사용하는 거다라고 기억하시면 되겠죠.
그전에는 사용자가 직접 객체 타입으로 바꿔주고 객체 타입이었던 것을 다시 기본 타입으로 사용하고 싶을 때는 다시 한 번 벗겨내서 사용했었던 부분들을 자동으로 알아서 컴파일러가 감싸서 담아주고
다시 벗겨서 대입해서 사용할 수 있게 이런 것들을 제공하는 부분입니다.
자바 버전이 높아질수록 사용자가 점점 편하게 사용할 수 있는 것이죠.
이렇게 이번 시간에는 java lang 패키지에 대해서 알아보았습니다.
'기타 및 프로그래밍(Java)' 카테고리의 다른 글
러시아 바그너 군사그룹이 푸틴 쿠데타를 하는 이유 요약 정리 (0) | 2023.06.24 |
---|---|
자바 프로그래밍_ 컬렉션 프레임웍(collection framework) (0) | 2022.04.20 |
자바 프로그래밍, switch 문 설명 (0) | 2022.04.19 |
자바 프로그래밍 조건문 if 설명 (0) | 2022.04.19 |
[자바 중급] Object와 오버라이딩 (0) | 2022.04.18 |
댓글