본문 바로가기

프로그래밍/Java

[Java]형변환

형변환이란

 데이터의 형태를 변환하는 것을 뜻한다. 자바의 형변환에는 자동 형변환강제 형변환이 있다.

 자바의 형변환에 대해 알기 위해서는 우선 자료형의 크기 구분에 대해서 알 필요가 있다.

 자료형 크기 순서는 byte(1byte) < short(2byte) < int(4byte) < long(8byte) < float(4byte) < double(8byte)이다.

※ 정수보다 실수를 큰 값으로 인식하기 때문에 8byte 정수인 
long보다 4byte 실수인 float을 큰 값으로 인식한다.

 

 

자동 형변환

· 작은 타입에서 큰 타입으로 자동으로 형변환이 이루어지는 것.

· 묵시적 형변환이라고도 한다.

 

강제 형변환

· 자동 형변환과는 반대로 큰 타입에서 작은 타입으로 형변환이 이루어지는 것.

· 어떤 특정 데이터타입의 변수에 다른데이터값을 저장할 때 ()안에 데이터타입을 적어서 다른데이터 값 앞에 붙이면 된다.

 

public class Test3 {

	public static void main(String[] args) {
	//데이터 형 변환(데이터의 형태 변환)
		
		//자바에서 데이터이 형 변환 방법 2가지
		//1. 자동 형 변환(묵시적 형 변환)
		//2. 강제 형 변환(명시적 형 변환)
		
		//1. 자동 형 변환 
		long i = 100; //int(4바이트크기)의 100을 long(8바이트크기)의 i변수에 저장할 때
					  //100은 자동으로 long타입의 데이터로 자동으로 형태가 변환되어
					  //long타입의 i 변수에 저장되게 된다. 
		
		double d = 12.34f; //float(4바이트크기)의 12.34F 값을 double(8바이트 크기)의 d변수에 저장 할 때
						   //float(4바이트크기)의 12.34f값은 자동으로 double크기의 데이터로
						   //자동 형 변환되어 12.34d로 만들어 지고 double d변수에 저장 된다.
						   //즉 작은 크기의 형태는 보다 큰 형태로 형 변환이 가능하다. (float -> double)
		
		double c = 100; //int(4바이트크기)의 100정수값을
						//double(8바이트크기)의 c변수에 저장하려고 할 때
						//int 값인 100이 double값인 100.0d로 자동 형 변환 되어
						//c변수에 저장된다.
		
		
		//int(4바이트크기)의 변수에 저장된 123값이 실수값 (4바이트크기)의 12.3f와 연산을 위해
		//123정수 값이 123.0f로 자동변환 되어서 연산하게 되므로
		//123.0f + 12.3f를 이용해 135.3f가 되어 float y변수에 저장되게 된다. 
		int x = 123;
		
		float y = x + 12.3f; //123+12.3
							 //135.3
		System.out.println(y);
		
		
		System.out.println("-----------------------------------------");
		
		
		//2. 강제 형 변환(명시적 형변환)
		//문법) 데이터타입1 변수명 = (데이터타입1)다른 데이터값;
		//설명) 어떤 특정 데이터타입1의 변수에 다른데이터값을 저장할 때
		//()안에 데이터타입1을 적어서 다른데이터 값 앞에 붙이면 된다.
		
		float f = (float)12.34; //12.34는 자바에서 double(8바이트크기)의 데이터로 인식하므로
								//이때 12.34를 float(4바이트크기)의 변수f에 담으려고 할 때
								//강제로 ~ 12.34를 12.34f로 형 변환(캐스팅)시켜 주어야 한다.

		int numInt = 123;
		short numShort = (short)numInt; //강제 형 변환
		
		
		//int a변수 메모리 크기는 4바이트(32비트)인데
		//1.1 실수값은 double(8바이트)크기의 데이터 이므로 int a변수에 4바이트 메모리에 저장할 수 없다
		//그러므로 1.1을 강제로 개발자가 정수 1로 데이터형태를 변환 해 주어야 한다.
		int a = (int)1.1;
		System.out.println(a);
	}
}

'프로그래밍 > Java' 카테고리의 다른 글

[Java]Scanner vs BufferedReader  (1) 2021.03.08
[Java]제어문  (0) 2021.03.03
[Java]연산자  (0) 2021.02.26
[Java]변수와 상수  (1) 2021.02.26
[Java]데이터 자료형  (0) 2021.02.25