java.lang 패키지
java.lang 패키지는 자바프로그래밍에서 가장 기본이 되는 클래스를 포함하고 있다. 따라서 다른 API 패키지들과는 달리 import없이 바로 사용할 수 있도록 만들어져 있다.
Object 클래스
Object클래스는 최상위 클래스이다. 따라서 Object클래스의 메서드들은 모든 클래스에서 사용 가능하다.
Object클래스는 toString, equals, clone, getclass, hashcode, notify, notifyAll, wait, finalize 메서드를 가진다.
toString() 과 equals()
toString() : 객체의 정보를 문자열로 제공한다. (주소값, 해시코드형태), 클래스에서 Object클래스의 toString을 오버라이딩 한다면 원하는 문자열로 출력할 수 있다.
equals() : 두 객체를 비교하기 위해 사용한다. 두 객체를 비교할 때 참조변수(주소값)을 기준으로 비교하기 때문에 같은 내용이라도 false의 결과를 얻는다. (객체 생성 시 각각 서로 다른 메모리가 할당되기 때문에 주소값이 다르다.)
결과 : 다르다
결과 : 같다
"같다"가 나온 이유는 Test클래스에서 equals() 메서드를 오버라이딩하여 주소값이 아닌 객체에 저장된 내용을 비교하도록 하였다.
wrapper 클래스
때때로 레퍼런스 타입이 담긴 배열에 기본형 타입을 넣어야 할 경우가 있다. 따라서 기본형 타입을 객체타입으로 변환할 수 있는 wrapper 클래스를 제공한다.
기본형 -> 레퍼런스형, 레퍼런스형 -> 기본형으로의 변환이 가능하다.
기본형 타입과 마찬가지로 wrapper클래스는 Boolean, Character, Byte, Short, Integer, Long, Float, Double 총 8가지를 제공한다.
문자열 -> 기본형 변환
-int num = Integer.parseInt("10");
문자열 -> wrapper클래스 변환
-int num = Integer.valueOf("100");
오토박싱과 언박싱
int num = 10;
Integer obj = new Integer(10); // boxing
int sum = num + obj.intValue(); // unboxing
JDK 1.5이전에는 inValue를 사용없이 기본형과 wrapper클래스를 연산하려고 하면 오류가 발생하였다.
하지만 이후에는 기본형을 wrapper클래스로 자동변환 해주고(autoboxgin), wrapper클래스를 기본형으로 자동변환(unboxing) 해주게 된다.
'Java' 카테고리의 다른 글
[Java] 정규표현식(Regular Expression) (0) | 2020.07.20 |
---|---|
[Java] java.lang패키지(2) String클래스, StringBuffer클래스 (0) | 2020.07.17 |
[Java] 객체지향(5) 추상클래스와 인터페이스 (0) | 2020.07.16 |
[Java] 객체지향(4) 다형성 정리 (0) | 2020.07.15 |
[Java] 객체지향(3) 상속 정리 (0) | 2020.07.15 |