-
[Java] 자바 기본 API - Wrapper ClassCSE/Java 2016. 4. 16. 14:30
자바 기본 API는 여러 절로 구성되어 있습니다.
StringTokenizer, StringBuffer, StringBuilder Class
Regular Expression & Pattern Class
Wrapper Class
자바는 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체를 생성할 수 있습니다. 이런 객체를 포장 객체라고 하는데, 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입니다. 포장 객체의 특징은 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없습니다. 만약 내부의 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 합니다.
Wrapper 클래스는 java.lang 패키지에 포함되어 있는데, 다음과 같이 기본 타입에 대응되는 클래스들이 있습니다.
박싱(Boxing)과 언박싱(Unboxing)
기본 타입의 값을 포장 객체로 만드는 과정을 박싱이라하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱이라고 합니다.
Integer 형의 박싱과 언박싱에 대한 예제를 알아보도록 합시다.
* BoxingUnBoxingExam.java
1234567891011121314151617181920212223package api;public class BoxingExam {public static void main(String[] args) {// BoxingInteger obj1 = new Integer(100);Integer obj2 = new Integer("300");Integer obj3 = Integer.valueOf("500");// Unboxingint value1 = obj1.intValue();int value2 = obj2.intValue();int value3 = obj3.intValue();System.out.println("value1: " + value1);System.out.println("value2: " + value2);System.out.println("value3: " + value3);}}cs 자동 박싱과 언박싱
기본 타입 값을 직접 박싱, 언박싱하지 않아도 자동적으로 일어나는 경우가 있습니다. 자동 박싱은 포장 클래스 타입에 기본값이 대입될 경우에 발생합니다.
1Integer obj = 100; // 자동 박싱cs 자동 언박싱은 기본 타입에 포장 객체가 대입될 경우 발생합니다. 예를 들어 Integer 객체를 int 타입 변수에 대입하거나, Integer 객체와 int 타입값을 연산하면 Integer 객체로부터 int 타입의 값이 자동 언박싱되어 연산됩니다.
1234Integer obj = new Integer(200);int value1 = obj; // 자동 언박싱int value2 = obj + 100; // 자동 언박싱cs 문자열을 기본 타입 값으로 변환
포장 클래스의 주요 용도는 기본 타입의 값을 박싱해서 포장 객체로 만드는 것이지만, 문자열을 기본 타입 값으로 변환할 때에도 많이 사용합니다. 대부분의 포장 클래스에는 "parse + 기본타입" 명으로 되어 있는 정적 메소드가 있습니다. 이 메소드는 문자열을 파라미터로 받아 기본 타입 값으로 변환합니다.
* StringParseExam.java
1234567891011121314151617package api;public class StringParseExam {public static void main(String[] args) {int value1 = Integer.parseInt("50");double value2 = Double.parseDouble("3.141592");boolean value3 = Boolean.parseBoolean("true");System.out.println("value1: " + value1);System.out.println("value2: " + value2);System.out.println("value3: " + value3);}}cs 포장 값 비교
포장 객체는 내부의 값을 비교하기 위해 == 와 != 연산자를 사용할 수 없습니다. 이 연산자는 내부의 값을 비교하는 것이 아니라 포장 객체의 참조를 비교하는 것이기 때문입니다.
내부의 값만 비교하려면 언박싱한 값을 얻어 비교해야 합니다. 그러나 자바 언어 명세를 보면 아래와 같은 규칙이 있습니다. 박싱된 값이 아래 표에 나와있는 값이면 == 와 != 연산자로 내부의 값을 바로 비교할 수 있습니다. 그 이외의 경우에는 비교할 수 없습니다.
end* 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.'CSE > Java' 카테고리의 다른 글
[Java] 자바 기본 API - Format Class (0) 2016.04.19 [Java] 자바 기본 API - Date, Calendar Class (0) 2016.04.16 [Java] 자바 기본 API - Math, Random Class (0) 2016.04.16 [Java] 자바 기본 API - Arrays Class (1) 2016.04.16 [Java] 자바 기본 API - 정규 표현식과 Pattern Class (0) 2016.04.16 [Java] 자바 기본 API - StringTokenizer, StringBuffer, StringBuilder Class (0) 2016.03.29