------------------------------------------------
기본자료형(원시형, primitive) wrapper 클래스
------------------------------------------------
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean
------------------------------------------------
기본자료형(원시형)은 데이터 저장 및 4칙연산 에서만 사용하는 것이다.
반면, wrapper 클래스는 데이터 저장 및 4칙연산 등 다양한 기능의 메소드가 제공되어 다방면으로 사용된다고 한다.
결론: 기본 타입의 데이터를 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스라고 한다.
자바는 객체지향 언어로, 기본형도 객체로 다루는 것이 필요할 때가 있다.
왜 자바는 모든것을 객체로 하지 않고 기본형으로 썼을까?
=>그 이유는 성능 때문이다. 기본형은 리터럴 값을 넣지만, 참조변수로 메모리 주소를 받아서 참조하는 참조형의 경우 기본형에 비해 성능이 떨어질 수밖에 없다.
래퍼 클래스 사용 예시>
public static void main(String[] args) {
Integer i = new Integer(100);
Integer i2 = new Integer(100);
System.out.println(i == i2); //false, Integer 클래스 - 참조형,
// 그러므로 i와 i2의 메모리 참조주소가 다르므로 false
System.out.println(i.equals(i2));
//equals() 값 비교-> Integer는 참조형이기 때문에 값 비교를 equals로 할 수 있다.
//같으면 true, 다르면 false
//compareTo의 경우 같으면 0, 작으면 양수, 크면 음수로 계산한다.
}
Character 클래스 사용하기 :
-입력받은 값을 대문자로 출력하기 : Character.toUpperCase()
char ch2 = 'c';
if('A' <= ch2 && ch2 <= 'Z') { // 대문자 인지 알아본다.
System.out.println(ch2+" 는 대문자 입니다.");
}
-입력받은 값을 소문자로 출력하기 : Character.toLowerCase()
if('a' <= ch2 && ch2 <= 'z') { // 소문자 인지 메서드 사용 없이 알아보는 방법
System.out.println(ch2+" 는 소문자 입니다.");
}
char ch2 = 'c';
if(Character.isLowerCase(ch2)) {
System.out.println(ch2+" 는 소문자 입니다.");
}
System.out.println(Character.toLowerCase('A')) // a 출력
int i = new Integer("100").intValue();
혹은,
int i = new Integer.Valueof("100");
혹은,
int i = Integer.parseInt("100"); // 주로 이 방법을 많이 사용함.
//Integer클래스를 int로 반환할 때 intValue를 사용한다.
1. Boxing(박싱, 포장을 하는것) 이란 ?
==> 기본자료형(boolean, byte, short, int, long, char, float, double)으로 되어진 변수를 객체타입인 Wrapper 클래스(Boolean, Byte, Short, Integer, Long, Character, Float, Double) 타입의 객체로 만들어주는 것을 말한다. = 기본형->참조형변환
int a1 =10;
Integer a2 = Integer.valueOf(a1); // Boxing(박싱)
System.out.println("a2 => " + a2);
int i = 5;
Integer j = new Integer(7);
int sum = i + j.intValue(); //에러 - 기본형,참조형 덧셈 불가
System.out.println(sum); //컴파일러가 "자동"으로 int sum = i + j.intValue();로 바꿔준다
2. UnBoxing(언박싱, 포장을 푸는것) 이란?
==> Wrapper 클래스(Boolean, Byte, Short, Integer, Long, Character, Float, Double)로 되어져 있는 객체를 기본자료형(boolean, byte, short, int, long, char, float, double)으로 만들어주는 것을 말한다. 참조형->기본형변환
Integer a3 = Integer.valueOf(20);
int a4 = a3.intValue();//UnBoxing(언박싱)
System.out.println("a4=" +a4); //20
int a5 = Integer.valueOf(20); //오토 언박싱
System.out.println("a5" + a5);
JDK1.5 이전에는 기본형과 참조형간의 연산이 불가능했다. 하지만 그 이후로는 컴파일러가 자동으로 바꾸어준다.