'Casting 변환'에 해당되는 글 1건

  1. 2007.07.11 Promotion 변환과 Casting 변환

Promotion
- 자동형 변환
- 작은 공간의 변수 값을 큰 공간의 변수로 이동

Casting
- 강제형 변환
- 큰 공간의 변수 값을 작은 공간의 변수로 이동
- 데이터 손실 고려
1/ class Exam_07 {
2/   public static void main(String[] args)  {
3/   int x = 256;
4/   long y = x;
5/   byte z = (byte)x;

6/   char a = 65;
7/   short b = (short)a;

8/   long c = 100L;
9/   float d = c; // promotion 변환

10/   float e = 10.24f;
11/   long f = (long)e; // casting 변환

12/   System.out.println(x);
13/   System.out.println(y);
14/   System.out.println(z);
15/   System.out.println(t);
 }
}
3번째 라인과 4번째 라인에서 자료형 변환이 일어나는데, 이 경우에는 작은 공간에서 큰 공간으로 이동하는 것이기에, 자동으로, 형변환이 일어나며, 아무것도 해주지 않아도 자동으로 변환된다. 이를 Promotion 변환이라 한다.

5 번째 라인에서는 큰 공간에서 작은 공간으로 이동하는 것이기에, 메모리 손실을 감수하면서, 강제로 형변환을 시켜줘야 한다. 이때 사용하는 기법은, 5번째 라인처럼 저장될 변수 앞에 변형 될 자료형태를 () 사용하여 붙여주면 된다. 이를 Casting 변환이라 한다.

6 번째 라인과 7번째 라인은 문자형을 사용하는 경우인데, char 와 short 은 똑같은 2byte 의 자료형이다. 똑같은 크기의 자료형이라 문제될것이 없어보이나, char 은 0부터 65535 까지이고, short 은 -32768부터 32767 까지로, 물론, 겹쳐지는 범위가 존재하나, 겹쳐지지 않는 범위 역시 존재하게 된다. 그러기에, 메모리 손실을 불러올수가 있게 되고, 이러한 연유로, 이때에는 Casting 변환을 사용하게 되는 것이다.

10번째 라인과 11번째 라인은 실수형과 정수형 자료형과의 관계를 보여주는데, 실수는 소수를 표현하고, 그래서 당연히, 정수보다 커서, 그들이 실제 저장할수 있는 범위, float 은 4바이트고, long은 8바이트고 하는 것으로는 따질수 없는 부분이 있으며, 이로 인해, 무조건 실수가 정수보다 크다고 봐야 한다. 그래서 long 을 float 으로 변환시킬때는 promotion 변환이 발생하고, 역으로, float 을 long 으로 변환시킬때는 Casting 변환이 일어나게 된다.

단, boolean 형태의 논리 자료형은 어떠한 형변환도 할수가 없는데, 그 이유는, 논리 자료형이 갖는 값이 true 와 false 단, 두가지의 형태이기에, 그 이외에 비트는 사용을 안하고, 그로 인해 발생할수 있는 문제점들을 방지하고자, 아예 형변환 자체를 막아놓게 되었다.

p.s 위의 글들은, 김승현 강사님열혈강의 Java Programming 의 Round 3-5, 동영상 강좌에 기초한 내용입다다.
:

BLOG main image
아무거나 공부하자!!! by Young79

공지사항

카테고리

분류 전체보기 (79)
Programing (29)
English (31)
Graphic (4)
Saying on T"We"tter (15)

최근에 올라온 글

최근에 달린 댓글

글 보관함

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total :
Today : Yesterday :