* 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);
댓글