종류\크기 |
1 byte |
2 byte |
4 byte |
8 byte |
|||
정수형 |
byte |
short |
int |
long |
|||
실수형 |
|
|
float |
double |
|||
정수형 |
|
char |
|
|
byte -> short / char -> int -> long -> float -> double
------------------->
이쪽 방향으로 대입시 자동 형변환
# JAVA에서는 산술 연산시에 int형을 기준으로 산술 연산을 진행한다.
- int형보다 작은 자료형끼리 계산할 경우 int형으로 자동형 변환이 되어서 계산된다.
- 큰 자료형을 작은 자료형에 넣을 경우에 강제형변환을 해줘야한다.
- int형보다 클 경우에는 큰 자료형으로 자동형 변환이 일어난다.
: num1과 num2는 둘 다 byte라서 계산 후, result에 넣어도 문제가 되지 않을 것 같지만
산술 연산을 진행하게 되면 int형이 기준이기 때문에 byte형은 int형으로 바뀌게 된다.
num1과 num2 둘 다 int형으로 변환되어 계산된다. 그래서 더한 결과가 int형이 되고, 이 것을 byte형인 변수에
담을려고 해서 에러가 발생했다.
이를 해결하기 위해서는 result를 int형으로 선언하거나 더한 결과값을 byte형으로 강제형변환 시켜야한다.
연습문제 29) 형변환을 생략할 수 있는 것은?
char ch = 'A';
int i = 100;
long l = 1000L;
d. float f = (float)l; -> float f = l; // 정수형보다 실수형이 더 큰 자료형으로 인식되어서 자동형변환이 일어난다.
e. i = (int)ch; -> int형이 더 크기 때문에 생략해도 됨. ch는 문자값을 저장하고 있지만 자동형변환이 일어나서 아스키코드값이 저장된다.
# 외우면 좋은 아스키 코드 값
'0' = 48
'A' = 65
'a' = 97 // 대문자와 소문자의 차이는 32
'5'를 숫자 5로 바꾸기 위해선 '0'을 뺴주면 된다 => '5' -'0'
'Java' 카테고리의 다른 글
소수점 자리 표시 방법 (0) | 2016.01.25 |
---|---|
객체 (0) | 2016.01.25 |
향상된 for문 (0) | 2016.01.22 |
배열 (0) | 2015.12.18 |
자주 쓰는 이클립스 단축키 (0) | 2015.12.10 |