foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[3. 형변환]

형 변환

Java로 프로그램을 만들다 보면 기존의 정의를 했던 자료형을 다른 자료형으로 변경을 해야 하는 경우가 있고 이것을 모르거나 익숙하지 못해서 문제를 발생 시키는 경우가 있는데 도대체 어떻게 해야지 기존 자료형에서 다른 자료형으로 변경이 가능한지 궁금하죠? 저도 알고는 있었지만 실제 프로그램을 구현을 할 때 다른 자료형으로 바꿔야 하는 것을 까먹고 적용을 하지 않아서 엄청 고생한 기억이 납니다. 

기존 자료형에서 다른 자료형으로 바꾸는 방법은 무엇일까요? 이것은 많이 사용을 하면 좋지는 않지만 필요할 때 적재적소에 적용을 하면 프로그램을 만드는데 상당한 도움이 될 수 있습니다. 이 글을 끝까지 읽는다면 기존 자료형에서 다른 자료형으로 변경을 할 수 있습니다.

기존 자료형에서 다른 자료형으로 바꾸는 것을 형 변환이라고 합니다. 형이 변환이 된다는 뜻으로 추론을 해볼 수 있었습니다. 이 형 변환을 하는 방법이 2가지가 있습니다. 바로 자동 형 변환과 강제 형 변환이 있습니다. 이 글을 읽고 공부하신다면 형 변환을 적재적소에 적용을 하면 간단하게 프로그래밍을 할 수가 있을 것입니다.

형 변환이란?

형 변환이란 말 그대로 형을 바꾸는 것을 말합니다. Java 첫 걸음에서 배운 변수와 자료형에서 여러 자료형이 있는데 처음에 지정한 자료형에서 다른 자료형으로 바꾸는 것을 말합니다.

<알아야 할 형 변환 내용>

  1. 기본 자료형과 참조 자료형이 있는데 기본 자료형은 어떤 기본 자료형과도 형 변환이 가능합니다. 하지만 기본 자료형과 참조 자료형은 형 변환을 할 수 없습니다.
  2. 잘못된 형 변환은 자료 손실이 일어 날 수 있습니다.
  3. 자동 형 변환과 강제 형 변환 중에 강제 형 변환을 사용을 하는 것이 좋습니다.
  4. 참조 자료형과 기본 자료형을 더하기 연산으로 더하면 형 변환에 우선 순위가 존재 하는데 참조 자료형과 기본 자료형 중 참조 자료형 우선 순위가 높아서 기본 자료형이 참조 자료형으로 변경됩니다.
형 변환 사진 1
형 변환 사진 2

※ 아무런 동작 없이 기본 자료형이 참조 자료형으로 참조 자료형이 기본 자료형으로 바뀌지는 않습니다. 같은 자료형 타입만 바로 형 변환을 할 수 있습니다.

1. 자동 형 변환

자동 형 변환은  컴퓨터가 알아서 자료형을 바꿔주는 것을 말합니다. 

참고 해야 할 사항은 기본 자료형에만 해당되는 형 변환 방식입니다. 

여기서 기본 자료형은 byte, short, char, int, long, float, double, boolean이 있습니다.

 boolean은 논리형이라 참과 거짓이라는 값만 가지므로 제외하고 진행을 하겠습니다. 

<자동 형 변환 규칙>

메커니즘 상 상위에 있는 것으로 자동으로 형 변환이 진행이 됩니다.

예를 들어 정수와 실수가 있으면 메커니즘으로 보면 실수는 소수점 값을 가지고 있기 때문에 정수보다 메커니즘으로 상위에 있다고 볼 수 있습니다.

메커니즘이 같다면 자료형의 크기를 기준으로 자동 형 변환을 하게 됩니다.

그 이유는 작은 크기의 자료형으로 바뀌면 데이터 손실이 발생 할 수 있기 때문입니다.

※정리 하면 byte -> short/char -> int -> long -> float -> double로 자동 형 변환이 진행이 된다고 생각 하시면 됩니다.

int a = 7/2; // int로 값을 저장하기 때문에 3.5가 아니라 3으로 a에 저장된다.
double avg 9/2.0; 
// int형과 double로 나누면 int형이 자동으로 double로 형이 변환되어 9.0/2.0이 되어 avg에 4.5가 저장된다.

2. 강제 형 변환

강제 형 변환은 직접 형 변환을 지정을 해주는 것입니다. 이 경우 확대 형 변환과 축소 형 변환이 있습니다.

확대와 축소는 자료형의 크기로 말하는데 확대는 기존에 정의한 자료형 보다 더 큰 크기에 자료형으로 바꾸는 것 입니다.

축소는 기존에 정의한 자료형 보다 더 작은 크기에 자료형으로 바꾸는 것을 말합니다.

여기서 중요한 부분은 확대 형 변환은 값이 커져서 데이터 손실이 발생을 하지 않지만 축소 형 변환은 데이터 손실이 발생 할 수도 있습니다.

byte b = 120;
int i = 0;
b = (byte)259; 
// byte 범위를 넘는 값을 byte 변수에 대입을 하면 값 손실이 발생 하여 b에는 3이 저장된다.
i = (int) 259.428;
// 실수인 259.428을 정수인 int에 대입을 하면 소숫점에 손실이 발생하여 i에는 259가 저장된다.

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나