Records rather than Memories

암시적 형 변환 본문

Software/JAVA

암시적 형 변환

Downer 2019. 10. 2. 16:29
1
00000000 00000000 00000000 11001000
cs

int타입의 정수 200의 bit 값

 

1
01000011 01001000 00000000 00000000
cs

float 타입의 정수 200.0의 bit 값

 

- 다음과 같이 내부적으로 수를 다룰 때 전혀 다른 bit 값을 가지게 된다.

- 이러한 이야기를 하는 이유는 형식이 다른 데이터를의 연산을 하려는 경우가 있기 때문이다.

따라서 형식이 다른 데이터를 연산하려면 한쪽의 데이터 타입을 전환(Convesrion)해야한다.

- 자바는 이러한 전환을 자동으로 처리해주는데 이것을 형 변환(implicit Conversion)이라고 한다.

 

 

1
double a = 3.0F;
cs

다음의 예제를 보자.

변수는 double, 상수는 float 서로 다른 데이터 타입에 적용하면 에러가 발생해야하는데 그렇지 않다.

그 이유는 3.0이라는 상수를 a라는 변수에 대입하는 순간 F가 붙어 있을 지라도 double로 자동 형변환 해주기 때문이다.

* 타입을 변경해도 정보의 손실이 일어나지 않는 경우 자동 형 변환.

 

1
2
float a = 3.0;
float a = 3.0F;
cs

상수에 아무 것도 붙어있지 않기 때문에 자동으로 double형으로 담긴다.

따라서 double형의 데이터를 float 변수에 담으려는 시도가 되기 때문에 오류가 발생한다.

 

* 자동 형변환의 기준

- 표현범위가 좁은 데이터 타입 -> 넓은 데이터 타입

*  데이터 타입의 범위

byte - short - int - long - float - double 

 

 

 

1
2
3
int a = 3;
float b = 1.0F;
double c = a + b;
cs

 

1. a는 float로 형변환 되고 a+b의 값이 4.0F가된다.

2. c는 double형이므로 한번 더 형변환 되어 4.0double형으로 c에 담긴다.

 

'Software > JAVA' 카테고리의 다른 글

연산자  (0) 2019.10.02
명시적 형 변환  (0) 2019.10.02
[java] Data type  (0) 2019.10.01
[java] 문자열  (0) 2019.10.01
[java] 정수와 실수  (0) 2019.10.01
Comments