################## 형변환 Type Conversion ##################
컴퓨터가 숫자 200을 저장할때
정수 200은 00000000 11001000
실수 200.0은 01000011 01001000
이렇게 같은 숫자지만 전혀 다르게 저장한다.
만약 우리가 200과 200.0 을 더하고 싶으면 한쪽의 데이터 타입을 다른 한쪽으로 맞춰줘야 컴퓨터는 계산을 처리할수 있을것이다.
################## 암시적 형 변환 implicit Conversion ##################
[ double a = 3.0F ] 를 살펴보자. 변수는 타입이 double 이지만, 상수는 float 이다. 하지만 이 코드는 오류가 발생하지 않는다.
데이터 타입 double 은 데이터 타입 float 보다 많은 수를 표현할수 있기 때문에 java가 자동으로 상수의 데이터타입을 double로 바꿔준다.
byte < short, char < int < long < float < double 순으로 형변환이 가능!
################## 명시적 형 변환 Explicit Conversion ##################
변수의 데이터타입이 더 많은 값을 표현할수 있으면, java가 상수의 데이터타입을 자동으로 바꿔줌.
[ float a = 100.0 ] 처럼 정보의 손실이 발생하는 경우는 자동형변환이 이루어지지 않는데,
이럴 경우는,
float a = (float)100.0; 처럼 명시해주면 해결됨!
int a = (int)100.1; 의 경우 double 데이터타입을 강제로 int로 명시해줄 경우 정보의 손실이 발생해 int가 표현가능한 100 으로 출력되는데,
이를 캐스트(cast)라고 하며, ( ) 를 사용하여 '(데이터 타입)' 이라고 값이나 변수 앞에 쓰면, 해당 데이터 타입으로 강제 변환할 수 있다. 이때 ( ) 를 '캐스트 연산자' 라고 부른다.
################## 문자 -> 숫자 ##################
1. String to Int
가장 많이 사용
자바 Integer클래스의 parseInt함수와 valueOf 함수로 변환 시켜줄 수 있다.
//Integer.paseInt(String값)
//Integer.valueOf(String값)
String s_num = "10";
int i_num = Integer.parseInt(s_num); //String -> Int 1번방식
int i_num2 = Integer.valueOf(s_num); //String -> Int 2번방식
2. String to Double, Float
자바 Long, Double, Float 클래스의 parseLong함수와 valueOf 함수로 변환 시켜줄 수 있다.
//Double.valueOf(String값)
//Float.valueOf(String값)
String s_num = "10";
double d_num = Double.valueOf(s_num); //String -> Double
float f_num = Float.valueOf(s_num); //String -> Float
3. String to Long, Short
잘쓰이진 않는다.
자바 Long, Short 클래스의 parseLong함수와 parseShort 함수로 변환 시켜줄 수 있다.
//Long.parseLong(String값)
//Short.parseShort(String값)
String s_num = "10";
long l_num = Long.parseLong(s_num); //String -> Long
short sh_num = Short.parseShort(s_num); //String -> Short
################## 숫자 -> 문자 ##################
1. Int to String
자바 String클래스의 valueOf, toString 함수로 변환 시켜줄 수 있다.
//String.valueOf(Int값)
//Integer.toString(Int값)
int i_num = 10;
String s_num;
s_num = String.valueOf(i_num); //문자 -> 숫자 1번방식
s_num = Integer.toString(i_num); //문자 -> 숫자 2번방식
s_num = ""+i_num; //문자 -> 숫자 3번방식
2. Double Float to String
실수를 문자로 변환하는 예제. 정수형과 마찬가지로 valueOf, toString함수로 치환 시킬 수 있다.
//String.valueOf(Float값,Double값)
//Float.toString(Float값,Double값)
float f_num = 10.10;
double d_num = 10.10;
String s_num;
s_num = String.valueOf(f_num); //Float -> String 1번방식
s_num = Float.toString(f_num); //Float -> String 2번방식
s_num = String.valueOf(d_num); //Double -> String 1번방식
s_num = Double.toString(d_num); //Double -> String 2번방식
################## 정수 <-> 실수 ##################
1. Double,Float to Int
실수를 정수로 치환하는 방법. (Int)캐스팅 방식으로 변환시킬 수 있는데
이때 실수형의 소수점아래자리는 버려짐.
//(int)실수값
double d_num = 10.101010;
float f_num = 10.1010
int i_num;
i_num = (int)d_num; //Double-> Int
i_num = (int)f_num; //Float -> Int
2. Int to Double,Float
실수형을 정수형으로 변환하는 방법. 마찬가지로 (Double,Float)캐스팅으로 구현할 수 있다.
//(int)실수값
int i_num = 10;
double d_num = (double)i_num; //Int -> Double
float f_num = (float)i_num; //Int -> Float