형변환

|

################## 형변환 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

'Java' 카테고리의 다른 글

명명규칙  (0) 2019.05.16
연산자  (0) 2019.05.16
상수의 데이터 타입  (0) 2019.05.16
데이터 단위  (0) 2019.05.16
주석과 세미콜론  (0) 2019.05.16
And