# 타입과 형 변환
타입 에러는 왜 나는 걸까? 타입 관련 주의점을 알아보자!
![클라우드스터딩-자바-타입-에러](https://i.imgur.com/DzhfhZt.png)
## 나눗셈 연산 주의
---
int와 int의 연산 결과는 int이다. double과 int의 연산은 double이다. 숫자간 연산은 더 큰 타입을 따른다.
```
double a = 5.0 / 2.0; // 2.5
int b = 4 / 2; // 2
int c = 5 / 2; // 2.5 (X) => 2 (O)
```
## 타입 불일치 주의
---
변수에 값 대입 시, 그 값이 변수의 타입과 일치해야 한다.
```
// 타입 불일치 에러
int score = "100";
// 해결 방법
int score = 100; // int로 일치
String score = "100"; // String으로 일치
int score = Integer.parseInt("100"); // "100" => 100
```
## 타입 변환 주의
---
타입 불일치의 문제는 타입 변환을 통해 해결가능하다. 타입변환은 자동 변환과 직접 변환이 있다.
#### 자동 변환
int는 double로 대입될 수 있다. 2를 2.0으로 보아도 무방하다. 이러한 자동 변환은 더 큰 타입으로 대입 시 발생한다. (byte(1) < short(2) < int(4) < long(8))
```
// 자동 변환 (더 큰 타입으로 대입될 때)
double p = 2; // 2 => 2.0
int n = 5 / 2; // 2
double q = n; // 2 => 2.0
```
#### 직접 변환
거꾸로 double은 int로 대입될 수 없다. 10.4를 10이라고 볼 수 없기때문. 강제로 소수점을 버리고 정수로 만들 순 있다. 이러한 문법을 타입 캐스팅(casting)이라 한다.
```
// 에러 발생
int r = 10.4; // ERROR
// 실수를 정수로 강제 캐스팅
int r = (int) 10.4; // 10.4 => 10
```
![클라우드스터딩-자바-형변환](https://i.imgur.com/g6vuhiZ.gif)
## 요약
---
![클라우드스터딩-자바-타입과-형변환-요약](https://i.imgur.com/U8O3Y9L.png)
- int 와 int의 연산 => int
- 타입 불일치(type mismatch)란, 값과 변수의 타입이 달라 생기는 에러다.
- 타입은 때때로 자동 변환(implicit conversion)되기도 한다.
- 필요 시 타입을 직접 변환(explicit conversion)할 수 있다.
- double은 int로 캐스팅(casting) 가능하다.
## 확인하기
---
<div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5cb08ba7790970001464d003" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5cb08ba7790970001464d003/q/1?method=iframe"></iframe></div></div>
## 도서구매
<a href="http://www.yes24.com/Product/Goods/104740689"><img src="http://image.yes24.com/goods/104740689/XL" width="50%" /></a>