본문 바로가기
Coding Note/Java

Java 4-1) Wrapper Class 래퍼클래스 / 숫자 ↔ 문자열 변경 / 2진수 8진수 16진수 10진수

by 푸린이 2021. 12. 11.

* Wrapper Class

- 일반 자료형(char, int, double)을 사용하기 편리하도록 구현해놓은 것

- "문자열" '가' '나' '다' 'h' 'e' 'l' 'l' 'o' → 문자들이 합해서 문자열이 됨

- char chArr[] = {'h', 'e', 'l', 'l', 'o'}; 문자를 배열로 만들어 문자열이 됨

- String : 자료형이 아님, Wrapper Class (문자열을 다룰 수 있도록 만들어 놓은 묶음(Class))

 

일반 자료형 Wrapper Class (object, 객체, 박스)
boolean Boolean
   
byte Byte
short Short
int Integer
long Long
   
float Float
double Double
   
char Character
char [] String

- Integer, Double, String 외의 class는 사용빈도 낮음

 

// Class 형식

// Integer == int

int i = 123;		// 자료형

Integer iobj = new Integer(123);		// 정석, 123은 생성자
Integer iobject = 123;		// 줄여서 씀

- class == 설계, 구성

- class의 기능 : 변수, 함수(메소드)를 포함시킬 수 있음

 

* 숫자 → 문자열로 변경

// 숫자 class → 문자열

// 방법1
Integer objNumber = 123;
String str = objNumber.toString();
System.out.println(str);

String str1 = objNumber.toString() + 1;
System.out.println(str1);

// 방법2
Integer objNumber2 = 321;
String str2 = objNumber2 + "" + 1;
System.out.println(str2);

- .toString() 으로 숫자를 문자열로 변경

- 또는 +"" 로 변경

- 문자열로 변경됐기 때문에 +1를 해주면 덧셈이 되지 않고 숫자가 된 문자열 뒤로 1이 붙는다.

 

// 숫자 자료형 → 문자열

int num = 123;
String str1 = num + "";
System.out.println(str1);

double dnum = 123.456;
String str2 = dnum + "" + 1;
System.out.println(str2);

- "" 없이 num만 쓰면 자료형이 맞지 않아 오류

- 자료형을 변경할 땐 .toString() 사용불가

- ↓ 이렇게 하니까 된다.

int num = 123;
String str1 = Integer.toString(num);
System.out.println(str1);

 

* 문자열 → 숫자로 변경

// parse

String str1 = "12345";
int n = Integer.parseInt(str1);
System.out.println(n + 1);

String str2 = "1234.5678";
double d = Double.parseDouble(str2);
System.out.println(d + 1);

- str1을 Integer로, str2를 Double로 돌려줌

- int, double을 Integer Double로 바꿔도 작동됨

- 연산해보면 1이 더해져서 숫자로 변환된 것을 확인할 수 있다.

 

* 2진수, 8진수, 10진수, 16진수 변경하는 기능

- Integer.toBinaryString(i) : 2진수로 변경

- Integer.toOctalString(i) : 8진수로 변경

- Integer.toHexString(i) : 16진수로 변경

- 10진수가 아닌 수(2진수, 8진수, 16진수)는 string으로 받음 ""

 

// 10진수 ↔ 2진수 (0, 1)

// 10진수 → 2진수 (0, 1)
int num10 = 16;
String num2 = Integer.toBinaryString(num10);		// 2진수는 string으로 표현됨
System.out.println(num2);

// 2진수 → 10진수
String number2 = "10101100";
int number10 = Integer.parseInt(number2, 2);		// number2가 2진수라는 것을 알려줌
System.out.println(number10);

- 2진수 → 10진수로 바꾸는 과정은, 문자열을 숫자로 바꾸는 과정(parse)과 같음

 

     Tips) 2진수를 10진수로 바꾸는법

 

// 10진수 ↔ 8진수

// 10진수 → 8진수
int iNum = 23;
String num8 = Integer.toOctalString(iNum);
System.out.println(num8);

// 8진수 → 10진수
String number8 = "27";
int iNum10 = Integer.parseInt(number8, 8);
System.out.println(iNum10);

 

// 10진수 ↔ 16진수

// 10진수 → 16진수
int Inum10 = 77;
String number16 = Integer.toHexString(Inum10);
System.out.println(number16);

// 16진수 → 10진수
String num16 = "4d";
int inum10 = Integer.parseInt(num16, 16);
System.out.println(inum10);

 

댓글