그럼에도 불구하고

👨‍💻

형변환이란 무엇인가? 본문

Java, Servlet/Java basics

형변환이란 무엇인가?

zenghyun 2022. 9. 21. 16:09

형 변환이란 말 그대로 변수나 상수의 데이터 타입을 다른 타입으로 바꾸는 것을 말한다. 

 

형 변환에는 자동 형변환(Promotion Casting)과 명시적 형 변환 (Demotion Casting)이 있다.

 

 

 

 

자동 형변환(Promotion Casting)

자동 형변환이란, 프로그램 작성자가 별도의 작업을 하지 않아도 자바가 알아서 알맞은 타입으로 변환해주는 형 변환이다.

 

자동 형변환 (Promotion Casting)

자동 형변환이 이루어지기 위해서는 조건이 있다.

큰 자료형에 작은 자료형이 대입돼야 한다는 것이다.

 

데이터 타입이 double로 지정된 변수 d 에는 100.5라는 값이 들어있다.

데이터 타입이 int로 지정된 변수 n에는 200이라는 값이 들어있다. 

 

 

여기서 double로 지정된 d라는 변수는 8byte의 메모리 저장공간을 갖고 있으며,

int로 지정된 n이라는 변수는 4byte의 메모리 저장공간을 갖게 된다. 

 

 

double이 int보다 큰 자료형이기 때문에 n에 저장된 값을 d에 넣으면 자동적으로 형 변환이 이루어진다. 

 

 

이와 마찬가지로 데이터 타입이 char로 지정된 변수 c에는 A라는 문자 값이 들어있다.

데이터 타입이 int로 지정된 i라는 변수에는 100이라는 값이 들어있다. 

 

 

여기서 char로 지정된 c라는 변수는 2byte의 메모리 저장공간을 갖고 있으며, 

int로 지정된 i라는 변수는 4byte의 메모리 저장공간을 갖괴 된다. 

 

 

int가 char보다 큰 자료형이기 때문에 n에 저장된 값을 i에 넣으면 자동적으로 형 변환이 이루어진다.

 

 

 

결과값

 

단, 자동 형변환이 이루어질 때 큰 자료형의 값의 표현방식을 따르게 된다.

 

1. n에 저장된 값 200은 d에 저장될 때 d의 표현 방식에 맞춰 정수가 아닌 유리수로 표현되기 때문에 200.0으로 출력된다.

 

2. c에 저장된 값 'A'는 i에 저장될 때 i의 표현 방식에 맞춰 정수로 표현되기 때문에 문자 'A'의 아스키코드 값 65가 출력된다.

 

 

 

 

 

 

 

명시적 형변환 (Demotion Casting)

명시적 형변환이란 프로그래머가 변수의 자료형을 강제로 바꾸는 것을 말한다.

 

명시적 형변환(Demotion Casting)

명시적 형변환이 이루어지기 위한 조건이 있다.

작은 자료형에 큰 자료형을 대입해야 한다는 것이다.

 

 

데이터 타입이 char로 지정된 변수 c 에는 'A'라는 문자 값이 들어있다.

 

 

여기서 char보다 int가 큰 자료형이기 때문에 c에 저장된 값을 n에 넣으면 자동적으로 형 변환이 이루어질 수 없다. 

그렇기 때문에 내가 변환하고자 하는 변수명 앞에 변환하고자 하는 타입을 지정해줘야 한다.

 

 

예시

변수명 = (변환하고자하는 타입) 변수명;

 

 

이와 마찬가지로 데이터 타입이 float로 지정된 변수 f에는 5.5라는 값이 들어있다.

float의 경우 넣고 싶은 값 뒤에 f를 적어줘야 한다.

데이터 타입이 int로 지정된 i라는 변수에는 10이라는 값이 들어있다. 

 

 

 

float가  int보다 큰 자료형이기 때문에 f에 저장된 값을 i에 넣으면 자동적으로 형 변환이 이루어질 수 없다.

위 설명과 마찬가지로 내가 변환하고자 하는 변수명 앞에 변환하고자 하는 타입을 지정해준다.

 

결과값

 

1. 변수 n에 c에 저장된 문자 'A'를 넣으면 'A'의 정수 값 65로 변환되어 n에 저장된다.

그리고 이 값을 다시 c에 넣게 되면 명시적 형 변환이 일어나서 다시 'A'라는 문자가 출력된다. 

 

 

2. 변수 i에 변수 f에 저장된 값 5.5를 넣으면 뒤 소수점이 제거되고 정수 5가 저장된다. 

'Java, Servlet > Java basics' 카테고리의 다른 글

String 클래스의 여러가지 메서드  (0) 2022.10.25
String Class  (0) 2022.10.25
삼항연산자란 무엇인가?  (0) 2022.09.21
데이터 타입이란?  (1) 2022.09.17
변수란 무엇인가  (1) 2022.09.17
Comments