1.타입변환(type casting)
-boolean을 제외한 기본 자료형 7개는 자료형을 서로 변환 가능
-자료형 A 변수명 = (자료형 A) 값
- 숫자뒤에 L,F 붙여 각각 long, float 타입변환
- 타입 변환을 수행할 때는 저장할 수 있는 값의 범위나 종류가 달라지므로 값이 변할 수 있음
- 2가지 타입변환 방법
package TypeCasting;
public class TypeCasting {
public static void main(String[] args)
{
//캐스팅 방법 1:자료형
int value1=(int)5.3;
long value2=(long)10;
float value3=(float)5.8;
double value4=(double)16;
System.out.println(value1);
System.out.println(value2);
System.out.println(value3);
System.out.println(value4);
System.out.println();
//캐스팅 방법 2:L,F
long value5=10L;
long value6=10l;
float value7=5.8F;
float value8=5.8f;
System.out.println(value5);
System.out.println(value6);
System.out.println(value7);
System.out.println(value8);
}
}
2. 자동 타입 변환과 수동 타입 변환
1) 자동 타입 변환
-컴파일러가 자동으로 수행
- 크기(범위)가 작은 자료형을 큰 자료형에 대입하는 업캐스팅(upcasting)
- 데이터 손실 없음
2) 수동 타입 변환
- 개발자가 직접 타입 변환 수행
- 큰 자료형을 작은 자료형에 대입하는 다운캐스팅(downcasting)
- 데이터 손실 위험
3) 자료형 크기
byte < short/char < int <long < float <double
- 자동 타입 변환과 수동 타입 변환
package TypeCasting;
public class TypeCasting_2 {
public static void main(String[]args) {
//자동 타입 변환
float value1 =3; //int-> float(업캐스팅)
long value2 = 5; //int -> long(업캐스팅)
double value3 = 7; //int -> double(업캐스팅)
byte value4 = 9; //int -> byte
short value5 = 11; //int -> short
System.out.println(value1);
System.out.println(value2);
System.out.println(value3);
System.out.println(value4);
System.out.println(value5);
System.out.println();
//수동 타입 변환
byte value6 =(byte)128; //int -> byte(다운캐스팅)
int value7 =(int)3.5; //double -> int(다운캐스팅)
float value8 =(float)7.5; //double -> float(다운캐스팅)
System.out.println(value6); // 서큘러 구조
System.out.println(value7);
System.out.println(value8);
}
}
cf> 서큘러(circular)구조
- 정수형 자료형을 작은 범위의 자료형으로 캐스팅할 때는 범위의 반대쪽 끝에서 부터 다시 시작
byte a= (byte)128; //-128로 변환
byte b= (byte)129; //-127로 변환
byte c= (byte)-129; //127로 변환
byte d= (byte)-130; //126로 변환
3. 기본 자료형 간의 연산
- boolean을 제외한 나머지 기본 자료형은 서로 연산 가능
- 연산은 같은 자료형끼리만 가능, 연산 결과 역시 같은 자료형으로
- 예외 : int보다 작은 자료형 간의 연산 결과는 int가 나옴 -> cpu에서 연산 최소단위가 int이기 때문
- 서로 다른 기본 자료형 간 연산결과
연산 | 결과 |
byte자료형 +short 자료형 | int 자료형 |
byte 자료형 + int 자료형 | int 자료형 |
short 자료형 +long 자료형 | long 자료형 |
int 자료형 + float 자료형 | float자료형 |
long 자료형 + float 자료형 | float 자료형 |
float 자료형 + double 자료형 | double 자료형 |
- 같은 자료형 간의 연산과 다른 자료형 간의 연산
package TypeCasting;
public class TypeCasting_3 {
public static void main(String[]args) {
//같은 자료형 간의 연산
int value1=3+5;
int value2=8/5;
float value3=3.0f+5.0f;
double value4=8.0/5.0;
byte data1=3;
byte data2=5;
//byte value5=data1+ data2 -> 오류발생
int value5 =data1+data2;
System.out.println(value1);
System.out.println(value2);
System.out.println(value3);
System.out.println(value4);
System.out.println(value5);
System.out.println();
//다른 자료형 간의 연산
//int value6 = 5+3.5; ->오류 발생
double value6=5+3.5;
int value7=5+(int)3.5;
double value8=5/2.0;
byte data3=3;
byte data4=5;
int value9 = data3+data4;
double value10=data3+data4;
System.out.println(value6);
System.out.println(value7);
System.out.println(value8);
System.out.println(value9);
System.out.println(value10);
}
}
'Java' 카테고리의 다른 글
3-2장 연산자의 연산 방법 (0) | 2023.04.19 |
---|---|
3-1장 연산자의 종류 (0) | 2023.04.19 |
2-3장 자료형의 종류 (0) | 2023.04.16 |
2-2장 이름짓기 (0) | 2023.04.15 |
2-1장 변수와 자료형 (0) | 2023.04.15 |