자바에는 기본형이 있지만 이 기본형을 객체로 사용해야하는 상황이 있다.
예를 들어서 매개변수가 객체향이거나 반환값이 객체형일때!!
이럴때를 위한 기본 자료향을 위한 클래스 Wrapper가 존재한다.
원시형
👉 스택메모리에 저장된다.
참조타입
(class,Arrat..) 👉 힙메모리에 저장된다.
static
👉 스택메모리에 저장된다.
원천타입 | Wrapper Class |
---|---|
int | Integer |
byte | Byte |
char | Charcter |
double | Double |
float | Float |
long | Long |
short | Short |
new
.value()
: 추천👍 //1. 새로운 객체 생성
Integer integer_1 = new Integer(100);
//2. 이미 있는 객체 활용
Integer integer_2 = Integer.valueOf(100);
//오토박싱 이용: 비추 👎
Integer integer_3 = 100;
if (integer_1 == integer_2){
System.out.println("true");
}else {
System.out.println("false");
}
if (integer_1 == integer_3){
System.out.println("true");
}else {
System.out.println("false");
}
if (integer_2 == integer_3){
System.out.println("true");
}else {
System.out.println("false");
}
기본 타입의 값을 wrapper class의 객체로 만드는 과정
wrapper class의 생성자 파라미터값으로 기본타입의 값 또는
문자열을 넘겨주면 된다.
wrapper class에서 기본 타입의 값을 얻어내는 과정
각 wrapper class마다 가지고 있는 "기본타입명 + Value()" 메소드를 호출하면 된다.
기본 자료형과 Wrapper 클래스 간에는 서로 암묵적 형변환이 가능하다.
오토박싱
: 기본형을 객체형으로 바꾸는 것
오토언박싱
: 객체를 기본형으로 바꾸는 것
문자열을 원하는 자료형으로 변환시키는 기능이다.
Wrapper클래스.parse+원시형(문자열)
정적메소드로 인스턴스를 생성하지 않고 사용이 가능하다.
String string = "12345";
int num = Integer.parseInt(string);
➕ 다른 자료형을 문자열로 바꾸는 것은 .toString
이다.
Wrapper
클래스의 비교는 인스턴스 주소값을 비교하는==
이 아닌 실제 객체 값을 비교하는eqauls
를 사용해야한다.
Wrapper 클래스들은 모두 equals()가 오버라이딩되어 있어서 주소값이 아닌 객체가
가지고 있는 값을 비교할 수 있다.
public class Integer_ {
public static void main(String[] args) {
//String to Int
String str = "123";
int num = Integer.parseInt(str);
//int to String
int num1 = 123;
String str1 = Integer.toString(num1);
//10진수 ->2진수
String str2 = Integer.toBinaryString(num);
System.out.println("2진수: "+str2);
//10진수->8진수
String str3 = Integer.toOctalString(num);
System.out.println("8진수: "+str3);
//10진수->16진수
String str4 = Integer.toHexString(num);
System.out.println("8진수: "+str4);
//2진수->10진수
int temp = Integer.parseInt(str2, 2);
System.out.println("2진수->10진수: "+temp);
//8진수->10진수
System.out.println("8진수->10진수: "+Integer.parseInt(str3, 8));
//둘 중 큰 수 반환 (min도 가능)
System.out.println("더 큰 수 : "+ Integer.max(3, 5));
//2진수의 1 개수
System.out.println("2진수의 1 개수 : "+ Integer.bitCount(num1));
}
}
내일도 화이팅!