일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바 프로젝트
- 자바 연산자
- 조건문
- 연산식
- 연산자
- Github
- 그래이들
- if문
- 빌드 도구
- 깃허브
- 삼항 연산자
- 자바 이항 연산자
- 변수
- 국비 프로젝트
- 단항 연산자
- Gradle
- 정적 자원
- 멀티 태스킹
- 람다식
- 스프링부트
- 애플페이
- 타입변환
- 동적 자원
- 자바
- 웹 프로그래밍
- 자바 람다식
- 람다
- Java
- 그래들
- 웹
- Today
- Total
인디언식 기우제
자바 - 타입 변환 본문
타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말한다. 예를들어 int를 byte로, 혹은 byte를 int로
변환하는 행위를 말한다. 타입 변환에는 자동(묵시적) 타입 변환과 강제(명시적) 타입 변환이 있다.
자동 타입 변환
자동 타입 변환(Promotion)은 프로그램 실행 도중에 자동적으로 타입이 변환되는것.
작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생한다.
큰 크기타입 = 작은 크기타입
큰 크기와 작은 크기의 타입을 구분하는것은 사용하는 메모리 크기이다.
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8) // 1은 1 byte
int와 long, float과 double 둘다 4byte 8byte 인데 실수형이 더 큰 이유는
실수형이 표현할 수 있는 값의 범위가 더 크기때문.
byte byteValue = 10;
int intValue = byteValue; //1byte의 byteValue를 4byte인 intValue에 담으면서 자동 타입 변환이 일어남
double doubleValue = intValue; //4byte 정수형 intValue를 8byte 실수형 doubleValue에 담으면서 10.0으로 변환됨
정수형 - 정수형 간의 자동 타입 변환은 값 손실이 없다.
정수타입이 실수타입으로 변환하는 것은 무조건 자동 타입 변환이 된다. 변환 이후의 값은 .0이 붙은 실수값이 된다.
char charValue = 'A';
int intValue = charValue; //65가 저장
char 타입을 int 타입으로 변환하면 해당 문자의 유니코드 값이 int 타입에 저장된다.
대문자 A의 유니코드(아스키코드)값인 65가 저장된다.
강제 타입 변환
큰 크기의 타입을 작은 크기의 타입으로 변환하고 싶을 때에는 강제 타입 변환(캐스팅 Casting)을 해야한다.
강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것.
캐스팅 연산자()를 사용한다.
작은 크기 타입 = (작은 크기 타입)큰 크기 타입
int intValue1 = 103029770;
byte byteValue1 = (byte)intValue1; //강제 타입 변환(캐스팅) //10 이 저장된다
int intValue2 = 10;
byte byteValue2 = (byte)intValue2; //10 이 저장된다. 값손실 없음
만약 byteValue1을 출력하면 10 이 출력된다. 103029770이라는 4byte 수를 1byte 크기의 byteValue1 쪼개서 담다보니
값 손실이 일어나 10만 남게 된 것이다.
하지만 10 이라는 1byte로도 표현 가능한 수는 byte타입 변수에 강제 타입 변환을 하여도 손실없이 그대로 10이 담긴다.
이렇게 기본 타입 변수들은 타입 변환이 가능하다. 하지만 강제 타입 변환을 할때에는 값 손실에 유의하며 변환을
하여야 한다. 변수들의 크기를 항상 기억하자.
부족한점, 잘못된 점이 있다면 지적 부탁드립니다. 피드백은 언제나 환영입니다.
'Java > 변수와 타입' 카테고리의 다른 글
자바 - 데이터 타입 (0) | 2022.11.01 |
---|---|
자바 - 변수 (0) | 2022.10.30 |