Daily Pogle

[Java] Wrapper class 본문

Programming language/Java

[Java] Wrapper class

pogles 2022. 12. 21. 10:50

프로그햄에 따라 기본 타입의 데이터를 객체로 취급해야하는 경우에 사용할 수 있는 클래스입니다.

 

대표적으로 우리가 자주 사용하는 wrapper class 는 기본자료형 char[] 대신 많이 활용하는 String 입니다. 


[ Wrapper class ]

 

Java 의 자료형은 기본타입, 참조타입으로 나뉩니다. 

1) 기본타입 : int, float, char, boolean 등

2) 참조타입 : class, interface 등

 

 

프로그래밍 시 기본타입 데이터를 객체로 표현해야하는 경우, 기본타입 데이터를 객체로 다루기 위해서 사용하는 클래스가 Wrapper class 입니다.

 

다음 기본타입과 이에 대응하는 Wrapper class 입니다. 

 

기본타입 Weaper class
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
char String
boolean Boolean

 

Wrapper class 는 기본타입을 갖고 있는 객체로 이를 포장객체라고도 합니다.

 

Wrapper class 는 기본타입을 객체(포장객체)로 만들기 위해 주로 사용하지만, 문자열을 기본타입 값으로 변환할 때도 사용합니다.

// 문자열 -> int
String numStr = "123";
int numInt = Integer.parseInt(numStr);

// 문자열 -> float
String numStr = "123.45";
float numflo = Float.parseFloat(numStr);

// 문자열 -> double
String numStr = "123.45";
double numDou = Double.parseDouble(numStr);

// 문자열 -> boolean;
String bolStr = "true";
boolean bol = Boolean.parseBoolean(bolStr);

// 숫자 -> 문자열 (1) 
Integer ObjNum = 12345;                      
String tranStr = ObjNum.toString();          

// 숫자 -> 문자열 (2)
int objNum = 12345;
String tranStr = Integer.toString(objNum,10)

 

// Wrapper class 는 객체를 생성하기 때문에 wrapper class 안의 기본자료 값이 같다고 해서 객체도 같은 것은 아닙니다.

Integer wrapperNum_1 = new Integer(30);
Integer wrapperNum_2 = new Integer(30);

System.out.println(wrapperNum_1); // 30 출력
System.out.println(wrapperNum_2); // 30 출력

boolean sameWrapper = (wrapperNum_1 == wrapperNum_2); 
System.out.println(sameWrapper); // false 출력

// 하지만 equals() 메서드를 사용하면 내부의 값으로 비교가능합니다.
boolean sameWrapper = wrapperNum_1.equals(wrapperNum_2)
System.out.println(sameWrapper); // true 출력

[wrapper class 관련 주요 method 정리]

function method function method
10진수 -> 2진수(string) Integer.toBinaryString(int); 2진수 -> 10진수 Integer.valueOf(string, 2);
10진수 -> 8진수(string) Integer.toOctalString(int); 8진수 -> 10진수 Integer.valueOf(string, 8);
10진수 ->16진수(string) Integer.toHexString(int); 16진수 -> 10진수 Integer.valueOf(string, 16);
문자열(숫자) -> int Integer.parseInt(string); 숫자 -> 문자열(숫자) Integer.toString(int, radix);
문자열(숫자) -> float Float.parseFloat(string);    
문자열(숫자) -> double Double.parseDouble(string);    
문자열(숫자) -> boolean Boolean.parseBoolean(string);    

*radix : 진수

 

 

package main;

import java.util.Scanner;

public class assignments {

	public static void main(String[] args) {
    
    	Scanner sc = new Scanner(System.in);
    
		System.out.println("[ 10진수에서 n진수로 변환 ]");
		int decNum = sc.nextInt();
		System.out.println("2진수 >> "+ Integer.toBinaryString(decNum));
		System.out.println("8진수 >> "+ Integer.toOctalString(decNum));
		System.out.println("16진수 >> "+ Integer.toHexString(decNum));
		
		System.out.println("[ 2진수에서 10진수 ]");
		String binNum = sc.next();
		System.out.println("변환 >> "+Integer.valueOf(binNum,2));

		System.out.println("[ 8진수에서 10진수 ]");
		String octNum = sc.next();
		System.out.println("변환 >> "+Integer.valueOf(octNum,8));
		
		System.out.println("[ 16진수에서 10진수]");
		String hexNum = sc.next();
		System.out.println("변환 >> "+ Integer.valueOf(hexNum,16));
        
		sc.close();
        
	}

}