[Java] 자바 형변환 - 숫자 형변환, 타입 캐스팅, Integer → String
자바 형변환
숫자 형변환, 타입캐스팅, Integer ▶ String 형 변환
📌 숫자 자료형 형변환
숫자형? 숫자를 담는 자료형은 정수형 (byte, short, int, long) 그리고 소수형 (float, double)이 있다.
정수형(byte, short, int, long)? 자바에서는 int를 정수형의 메인으로 사용한다. 정수를 입력하면 기본적으로 int로 간주한다.
소수형 (float, double)? float과 double은 둘다 소수형을 담지만 정밀도 혹은 정확도에 차이가 있다.
double이 더 정밀하게 값을 보관할 수 있다. 이러한 이유로 자바에서는 double을 소수형의 기본으로 사용한다.
즉, 소수를 입력하면 자바에서 기본적으로 double로 인식한다 .
자바의 숫자 자료형들은 랭크에 따라서 형 변환이 가능하다.
to / from | byte | short | int | long | float | double |
byte | - | X | X | X | X | X |
short | O | - | X | X | X | X |
int | O | O | - | X | X | X |
long | O | O | O | - | X | X |
float | O | O | O | O | - | X |
double | O | O | O | O | O | - |
바꾸고자 하는 형(to)이 기존의 형(from)보다 넓은 데이터를 담을 수 있는 자료형일 경우 특별한 처리 없이 형을 변환할 수 있다.
int a = 36;
double b = a; // int to double
short c = 17;
long d = c; // short to long
float e = 3.14f;
double f = e; // float to double
📌 타입 캐스팅 (Type Casting)
값(혹은 변수) 앞에 (자료형)
(예: (int) x)을 적어주면 강제적으로 형을 변환시킬 수 있다.
int a = 3;
double b = (double) a;
long c = (long) a;
System.out.println(b); // 결과 : 3.0
System.out.println(c); // 결과 : 3
더 큰 랭크의 값을 더 작을 랭크의 변수에 담는 것도 가능하지만,
데이터의 손실이 있다!
double pi = 3.14;
int myInt = (int) pi; // 데이터 손실 (소수 부분)
System.out.println(myInt); // 결과 : 3
int a = 9, b = 5;
System.out.println(a / b); // 결과 : 1
이렇게 정수값 a와 b가 주어졌을 때, 9 / 5를 하면 1이 나오는데,
여기서 1.8이 나오게 하고 싶으면 타입 캐스팅을 해서 9를 9.0으로 바꿔주고, 9.0 / 5를 계산하면 된다.
int a = 9, b = 5;
System.out.println((double) a / b); // 결과 : 1.8
📌 자바 형 변환 Integer → String
Java에서 int형에서 String으로 변환하는 방법으로는
Integer.toString(int i)과 (String) i 두 가지 방법이 있다.
1. Integer.toString(int i) ✅
Integer.toString(int i) 메소드는 정수형 값을 문자열로 변환할 때 사용한다.
해당 메소드의 반환 값은 변환된 문자열(String)이다.
이 메소드는 Integer클래스의 정적 메소드로 제공이 된다.
int num = 12345;
String numToStr = Integer.toString(num);
// 결과 : "12345"
num 변수의 값인 12345가 문자열로 변환되어 numToStr 변수에 저장이 된다. ( "12345" )
2. (String) i
(String) i 는 형 변환 연산자를 사용하여 정수형 값을 문자열로 변환해준다.
기본 데이터 유형 간에 형 변환이 필요한 경우에 사용이 된다.
int num = 6789;
String numToString = (String) num;
num변수의 값을 문자열로 변환하여 numToString변수에 저장한다!
이 방법은 컴파일러에 의해 자동으로 형변환되는 경우가 있기 때문에, 코드의 가독성을 해치기도 한다.
그래서 2번 방법보다는 1번 방법을 사용하는것이 더 좋다 !