[JAVA] 형변환 정리
들어가기에 앞서서...
Spring 백엔드 개발자로 진로를 전향하며 코테 언어를 C++에서 JAVA로 바꿨더니만...
망할 형변환 아 tlqkf 넘 헷갈린다... !! 까짓거 내가 볼라고 정리 좀 해본다 ~
** 목차 **
1. 문자 : char
2. 숫자 : 정수(int), 실수(double)
3. 문자열 : String
4. 배열 : array
5. 총 정리
1. 문자 : char
char to int / double
* 형변환 연산자 사용
단순 형변환을 할 경우 해당 아스키코드 값으로 출력한다. ex) '5' -> 53
원하는 값을 얻으려면 '0'(48)에 해당하는 값을 빼주어야 한다.
// [변경할 타입] 변수명 = (변경할 타입) 변경할 변수명 - '0';
char c = '5';
int i = (int)(c - '0');
* Character.getNumericValue(char c) 사용
char to int만 형변환 가능
char c = '4';
int i = Character.getNumericValue(c);
char to String
* Character.toString(char c) 사용
: null 값이 들어오면 Null Pointer Exception
char c = 'A'
String str = Character.toString(c);
* String.valueOf(char c) 사용
: char[] to String도 적용 가능 / null 문자열 리턴
char c = 'A'
String str = String.valueOf(c);
char[] cArray = ['a', 'b', 'c'];
String str = String.valueOf(cArray);
char to array
* char to array(char)가 아닐 경우는 char를 원하는 타입으로 변환 후 해당 타입의 배열에 넣어준다.
char c = 'a';
char[] charArray = {c}; // char를 하나의 배열에 넣음
2. 숫자 : 정수(int), 실수(double)
int to char
* 형변환 연산자 사용
int에 저장된 값이 char의 범위를 벗어나는 경우, 정보가 손실된다.
int를 char로 형변환할 때 부호 비트는 무시된다. 이로 인해 음수 값이 양수 값으로 변환될 수 있다.
int i = 97;
char c = (char) i;
int / double to String
* [ Integer / Double ].toString( [ int / double ] num) 사용
int i = 97;
double d = 79;
String intStr = Integer.toString(i);
String doubleStr = Double.toString(d);
* String.valueOf( [int / double] num ) 사용
int i = 97;
double d = 79;
String intStr = String.valueOf(i);
String doubleStr = String.valueOf(d);
[ int / double ] to array
* [ int / double ] to array[ int / double ]가 아닐 경우는 [ int / double ]를 원하는 타입으로 변환 후 해당 타입의 배열에 넣어준다.
int i = 97;
double d = 79;
int[] intArray = {i}; // int를 하나의 배열에 넣음
double[] doubleArray = {d}; // double을 하나의 배열에 넣음
3. 문자열 : String
String to char
* str.charAt(int index) 사용
String str = "Hello world~";
char c = str.charAt(0); // c = 'H';
String to int / double
* Integer.parseInt(String str) / Double.parseDouble(String str) 사용
: 문자열이 유효한 숫자를 포함하지 않는다면 NumberFormatException이 throw 된다.
String intStr = "25";
String doubleStr = "99.7";
int intNum = Integer.parseInt(intStr);
double doubleNum = Double.parseDouble(doubleStr);
* Integer.valueOf(String str) / Double.valueOf(String str) 사용
: 문자열이 유효한 숫자를 포함하지 않는다면 NumberFormatException이 throw 된다.
String intStr = "25";
String doubleStr = "99.7";
int intNum = Integer.valueOf(intStr);
double doubleNum = Double.valueOf(doubleStr);
String to array
* str.toCharArray() 사용
: 문자열에서 char 배열로 변경
String str = "Hello world~";
char[] charArray = str.toCharArray();
// ['H', 'E', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '~']
* str.split("") 사용
: 문자열에서 String배열로 변경
String str = "Hello world!";
String[] strArray = str.split("");
4. 배열 : array
StringArray to String
* Arrays.toString(String[] str) 사용
: import java.util.Arrays 필요
String[] strArray = {"Hello", "World!"};
String str = Arrays.toString(strArray);
System.out.println(str);
// result : [Hello, World!]
* StringBuilder.append(String[] str) 사용
String[] strArray = {"Hello", "World!"};
StringBuilder sb = new StringBuilder();
for (String str : strArray) {
sb.append(str);
}
String str = sb.toString();
System.out.println(str);
// result : HelloWorld!
* String.join("", String[] str) 사용
String[] strArray = {"Hello", "World!"};
String str = String.join("_", strArray);
System.out.println(str);
// Hello_World!
5. 총 정리
* 문자 : char
- char to int / double
- 형변환 연산자 사용
- Character.getNumericValue(char c) 사용
- char to String
- Character.toString(char c) 사용
- String.valueOf(char c) 사용
* 숫자 : 정수(int), 실수(double)
- int to char
- 형변환 연산자 사용
- int / double to String
- [ Integer / Double ].toString( [ int / double ] num) 사용
- String.valueOf( [int / double] num ) 사용
* 문자열 : String
- String to char
- str.charAt(int index) 사용
- String to int / double
- Integer.parseInt(String str) / Double.parseDouble(String str) 사용
- Integer.valueOf(String str) / Double.valueOf(String str) 사용
- String to array(char)
- str.toCharArray() 사용
- String to array(String)
- str.split("") 사용
* 배열 : array
- StringArray to String
- Arrays.toString(String[] str) 사용
- StringBuilder.append(String[] str) 사용
- String.join("", String[] str) 사용