Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

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


	}
}