Everything has an expiration date
131 - Java Wrapper 클래스 : primitive(기본) 타입 데이터를 reference(참조) 타입 객체로 변환하기, 본문
[Java]/Program source (java)
131 - Java Wrapper 클래스 : primitive(기본) 타입 데이터를 reference(참조) 타입 객체로 변환하기,
Jelly-fish 2023. 9. 15. 17:13/*==============================================
■■■ 자바의 주요(중요) 클래스 ■■■
- 자바에서 기본적으로 제공하는 주요 클래스들
- Wrapper 클래스
================================================*/
public class Test131
{
public static void main(String[] args)
{
boolean bi = true; // → 기본 타입 boolean bi!
Boolean wrapBi = new Boolean(bi); // → Boolean() 생성자 안에 들어가면서
// 기본 타입 bi → 참조 타입 wrapBI !
//[오토 박싱(Auto Boxing)]============================================
Boolean wBi = bi; //-- 오토 박싱
// 『 참조 타입(객체) Boolean wBi = 기본 타입 boolean bi 』
// 『 참조 타입(reference type) ≠ 기본 타입(primitive type) 』
// ▶ 대입 연산자를 기준으로, 좌변 우변의 타입이 동일하지가 않다!
// ▶ java가 몰래 기본 타입 bi를 참조 타입 박스에 담아준 것~!!!
// ▶ 자동으로 박스 안에 들어갔다~ → 【 Auto Boxing 】!!!
// ===================================================================
int n = 300; // → 기본 타입 Integer n!
Integer wrapN = new Integer(n); // → Integer() 생성자 안에 들어가면서
// 기본 타입 n → 참조 타입 wrapN !
//[오토 언박싱(Auto UnBoxing)]=========================================
int n2 = wrapN; //-- 오토 언박싱
// 『 기본 타입 int i = 참조 타입(객체) Integer wrapN 』
// 『 기본 타입(primitive type) ≠ 참조 타입(reference type) 』
// ▶ 대입 연산자를 기준으로, 좌변 우변의 타입이 동일하지가 않다!
// ▶ java가 몰래 참조 타입 wrapN의 박스 포장을 풀고,
// 기본 타입으로 풀어준 것!
// ▶ 자동으로 박스를 열어버렸다! → 【 Auto UnBoxing 】!!!
// ===================================================================
/*
(Why?) 왜 Integer 클래스의 생성자에 값을 넣으면, 참조 타입이 돼?〓〓〓〓
[java Integer api를 봐봐!]★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
Integer(int value)
(→ Integer의 생성자는 int 타입 매개변수 value를 받아!)
Constructs a newly allocated Integer object that
represents the specified int value.
(→ 새로 할당된 Integer 객체를 생성합니다.)
(→ 지정된(=매개변수로 입력받은) int 값을 나타냅니다.)
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
*/
float f = 300.3f;
Float wrapF = new Float(f);
System.out.println(wrapBi.toString());
System.out.println(wrapN.toString());
System.out.println(wrapF.toString());
//--==>> true
// 300
// 300.3
System.out.println(wrapBi);
System.out.println(wrapN);
System.out.println(wrapF);
//--==>> true
// 300
// 300.3
// Integer 클래스
String sn = "12";
int ni = Integer.parseInt(sn);
System.out.printf("ni : %3d\n", ni);
//--==>> ni : 12
// 첫 번째 param = 2진수의 문자열, 두 번째 param = 진수
// 결과값 10진수로 변환하여 출력한다.
// (2³ * 0) + (2² * 1) + (2¹ * 0) + (2^0 * 1) = 0 + 4 + 0 + 1
// = 5 !
ni = Integer.parseInt("0101", 2);
System.out.printf("ni : %3d\n", ni);
//--==>> ni : 5
//(8^1 * 1) + (8^0 * 2) = 8 + 2
// = 10 !
ni = Integer.parseInt("12", 8);
System.out.printf("ni : %3d\n", ni);
//--==>> ni : 10
// 16진수 A = 10 !
ni = Integer.parseInt("A", 16);
System.out.printf("ni : %3d\n", ni);
//--==>> ni : 10
// toXxx() 메소드 ▶ 무언가를 변환하는 메소드
// isXxx() 메소드 ▶ 이거인지 아닌지 판별하는 메소드
// 클래스 타입 메소드, 문자열 타입 반환.
// 입력받은 값을 2진수의 문자열로 반환한다.
sn = Integer.toBinaryString(20);
System.out.printf("sn : %s\n", sn);
//--==>> sn : 10100
// 8진수 형으로 변환
//
sn = Integer.toOctalString(31);
System.out.printf("sn : %s\n", sn);
//--==>> sn : 37
// (16 + 15)
// (1 + f )
// 16진수 형으로 변환
sn = Integer.toHexString(31);
System.out.printf("sn : %s\n", sn);
//--==>> sn : 1f
Integer num = new Integer(50); // 정수 int 타입 = 50 → new Integer(50) → Integer 타입 → num에 저장.
System.out.println("num.toString() : " + num.toString()); // num에 toString 메소드 사용.→ String 타입(메소드의 반환값)
//--==>> num.toString() : 50
int n3 = 345; // int 타입(기본 타입) 345
// integer 타입 345를 valueOf static 타입 메소드를 통해 Integer 객체 타입으로 변환.
Integer n4 = Integer.valueOf(n3); // n3를 Integer타입으로 변환
System.out.println("n4 : " + n4);
//--==>> n4 : 345
}
}