래퍼 클래스
- 기본형 값을 감싸는 클래스
- 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스
객체지향언어 => 모든 것이 객체
성능 때문에 기본형을 만들었다!!
public class Ex1 {
public static void main(String[] args) {
Integer i = new Integer(100);
Integer i2 = new Integer(100);
//Integer i3 = Integer.valueOf(100);
System.out.println("i1 == i2 ?" + (i == i2));
System.out.println("i.equals(i2) ? " + i.equals(i2));
System.out.println("i.compareTo(i2) ? " + i.compareTo(i2)); // 같으면: 0, 작으면: 양수, 크면: 음수, 정렬 사용
System.out.println("i.toString() = " + i.toString()); // "100"
System.out.println("MAX_VALUE = " + Integer.MAX_VALUE);
System.out.println("MIN_VALUE = " + Integer.MIN_VALUE);
System.out.println("SIZE = " + Integer.SIZE + " bit");
System.out.println("BYTES = " + Integer.BYTES + " byte");
System.out.println("TYPE = " + Integer.TYPE);
}
}
i1 == i2 ?false
i.equals(i2) ? true
i.compareTo(i2) ? 0
i.toString() = 100
MAX_VALUE = 2147483647
MIN_VALUE = -2147483648
SIZE = 32 bit
BYTES = 4 byte
TYPE = int
Number 클래스
- 모든 숫자 래퍼 클래스의 조상
- long 보다 큰 정수를 다룰 때 BigInteger 이라는 것이 있다.
- double 보다 크고 더 정확한 실수를 다룰 때 BigDecimal 이라는 것이 있다.
문자열을 숫자로 변환하기
문자열을 숫자로 변환하는 다양한 방법
int i = new Integer("100").intValue(); // floatValue, longValue ...
int i2 = Interger.parseInt("100"); // 주로 이 방법을 많이 사용
Integer i3 = Integer.valueOf("100");
Integer.parseInt("100"); : 문자열 => 기본형
Integer.valueOf("100"); : 문자열 => 래퍼 클래스
String str = b.toString(); : 래퍼 클래스 => 문자열
N진법의 문자열을 숫자로 변환하는 방법
int i4 = Integer.parseInt("100", 2); // 100(2) => 4
int i5 = Integer.parseInt("100", 8); // 100(8) => 64
int i6 = Integer.parseInt("100", 16); // 100(16) => 256
int i7 = Integer.parseInt("FF", 16); // FF(16) => 255
오토박싱 & 언박싱
JDk 1.5 이전에는 기본형과 참조형간의 연산이 불가능
int i = 5;
Integer iObj = new Integer(7);
int sum = i + iObj; // 에러(JDK 1.5 이전)
// int sum = i + iObj.intValue(); // 기본형으로 변환(Integer -> int), 컴파일 후의 코드
기본형의 값을 객체로 자동변환하는 것을 오토박싱, 그 반대는 언박싱
public class Ex3 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(100)); // list에는 객체만 추가 가능
list.add(100); // JDK 1.5 전에는 에러(오토박싱)
//Integer i = list.get(0); // list에 저장된 첫 번째 객체를 꺼낸다.
//int i = list.get(0).intValue(); // intValue()로 Integer를 int로 반환
int i = list.get(0); // intValue()로 Integer를 int로 반환(언박싱)
}
}
오토박싱(Auto-boxing)
- int => Integer
언박싱(Unboxing)
- Integer => int
public class Ex4 {
public static void main(String[] args) {
int i = 0;
// 기본형을 참조형으로 형변환(형변환 생략가능)
Integer intg = (Integer) i; //Integer intg = Integer.valueOf(i)
Object obj = (Object) i; //Object obj = (Object) Integer.valueOf(i);
Long lng = 100L; // Long lng = new Long(100L); 삭제 예정 => Long lng = Long.valueOf(100L);
int i2 = intg + 10; // 참조형과 기본형간의 연산 가능
long l = intg + lng; // 참조형 간의 덧셈도 가능
Integer intg2 = new Integer(20);
int i3 = (int)intg2; // 참조형을 기본형으로 형변환도 가능(형변환 생략가능)
}
}
'복습' 카테고리의 다른 글
[Java 복습] 제네릭이 필요한 이유!! (0) | 2024.05.10 |
---|---|
[Java 복습] Clendar 클래스 (0) | 2024.05.04 |
[Java 복습] String 클래스, StringBuffer, StringBuilder (0) | 2024.05.03 |
[Java 복습] Object 클래스 (0) | 2024.05.03 |
[Java 복습] hashCode( ), toString( ) (0) | 2024.05.03 |