본문 바로가기

Java

2-4장 기본 자료형 간의 타입 변환

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