☕ Java

[JAVA] 형변환 정리

MNY 2024. 5. 3. 15:38
728x90
반응형

 

들어가기에 앞서서...

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) 사용
728x90
반응형