728x90
반응형
SMALL
- 타입 변환이란?
: 데이터 타입을 다른 데이터 타입으로 변환하는 것
<자동 타입 변환>
- 자동 타입 변환(promotion)
- 자동으로 타입 변환이 일어나는 것을 의미
- 값의 허용범위가 작은 타입이 허용범위가 큰 타입으로 저장될 때 발생
- 프로그램 실행 도중에 자동으로 타입 변환이 일어나는 것을 말함
- 기본 타입 크기 순 : byte <short <int <long <float <double
- 자동 타입 변환에서의 예외
: char타입은 음수를 포함하지 않기 때문에 byte 타입에서 char타입으로 자동 변환 불가능
public class PromotionExample {
public static void main(String[] args) {
//byte -> int 자동 타입 변환
byte byteValue = 10;
int intValue = byteValue;
System.out.println("intValue: " + intValue);
//char -> int 자동 타입 변환
char charValue = '가';
intValue = charValue;
System.out.println("가의 유니코드: " + intValue);
//int -> long 자동 타입 변환
intValue = 50;
long longValue = intValue;;
System.out.println("longValue: " + longValue);
//long -> float 자동 타입 변환
longValue = 100;
float floatValue = longValue;
System.out.println("floatValue: " + floatValue);
//float -> double 자동 타입 변환
floatValue = 100.5F;
double doubleValue = floatValue;
System.out.println("doubleValue: " + doubleValue);
}
}
결과 :
<강제 타입 변환>
- 강제 타입 변환(캐스팅 : casting) : 큰 허용범위 타입을 작은 허용범위 타입으로 강제로 나눠서 저장하는 것
public class CastingExample {
public static void main(String[] args) {
//int -> char 강제 타입 변환
int intValue = 44032;
char charValue = (char) intValue;
System.out.println(charValue);
//long -> int 강제 타입 변환
long longValue = 500;
intValue = (int) longValue;
System.out.println(intValue);
//double -> int 강제 타입 변환
double doubleValue = 3.14;
intValue = (int) doubleValue;
System.out.println(intValue);
}
}
결과 :
<정수 연산에서의 자동 타입 변환>
- 정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 byte, short 타입의 변수는
int 타입으로 자동 타입 변환되어 연산을 수행
- 예외 사항 : 피연산자가 변수가 아닌 일반 상수일 때에는 에러가 발생하지 않음
- 모든 변수가 int 타입으로 변환되는 것은 아니다.
→ 피연산자 중 허용 범위가 큰 타입으로 변환되어 수행
<실수 연산에서의 자동 타입 변환>
- 산술연산식에서 두 피연산자가 동일한 타입이라면 해당 타입으로 연산되지만,
하나가 double 타입이라면 다른 피연산자도 double타입으로 자동 타입 변환되어 연산을 수행
* 올바른 연산 방법
public class OperationsPromotionExample {
public static void main(String[] args) {
byte byteValue1 = 10;
byte byteValue2 = 20;
//byte byteValue3 = byteValue1 + byteValue2; //컴파일 에러
int intValue1 = byteValue1 + byteValue2;
System.out.println(intValue1);
char charValue1 = 'A';
char charValue2 = 1;
//char charValue3 = charValue1 + charValue2; //컴파일 에러
int intValue2 = charValue1 + charValue2;
System.out.println("유니코드=" + intValue2);
System.out.println("출력문자=" + (char)intValue2);
int intValue3 = 10;
int intValue4 = intValue3/4;
System.out.println(intValue4);
int intValue5 = 10;
//int intValue6 = 10 / 4.0; //컴파일 에러
double doubleValue = intValue5 / 4.0;
System.out.println(doubleValue);
int x = 1;
int y = 2;
double result = (double) x / y;
System.out.println(result);
}
}
결과 :
<'+' 연산에서의 문자열 자동 타입 변환>
- + 연산의 두가지 기능
- 모두 숫자일 경우 : 덧셈 수행
- 피연산자 중 하나가 문자열일 경우 : 나머지 피연산자도 문자열로 자동 형변환되어 문자열 결합 연산 수행
* 특정 부분을 먼저 연산하고 싶은 경우에는 해당 부분을 괄호()로 감싼 후 연산
<문자열을 기본 타입으로 강제 타입 변환>
* 문자열이 숫자를 제외한 알파벳이나 특수문자, 한글 등을 포함하고 있으면 예외 발생
*반대로 문자열로 변경하고 싶을 경우 String.valueOf() 사용
728x90
반응형
LIST
'프로그래밍언어 > Java' 카테고리의 다른 글
03-1. 연산자와 연산식 (0) | 2021.01.05 |
---|---|
02-4. 변수와 시스템 입출력 (0) | 2021.01.04 |
02-2. 기본타입 (0) | 2020.12.29 |
02-1. 변수 (0) | 2020.12.28 |
01-3. 자바 프로그램 개발 과정(2) (0) | 2020.12.25 |