형(brother) 변환이 아니고 형변환(Casting)입니다. 죄송합니다. 저번 switch문을 활용한 일상코딩 과제는 완료하셨나요? 이런 별 것 아닌 것 같은 과제들은 몇 천줄, 몇 만 줄처럼 최대한 길게 코딩할수록 점점 사고력이 좋아진답니다. 그래서 과제를 하는 분은 더 머리가 좋아졌습니다. 물론 과제를 하지 않았더라도 오늘 강의로 형변환을 공부한다면 분명 코딩 실력이 좋아질 겁니다.
캐스팅이라고 부르는 형변환은 쉽게 말해 데이터 타입의 변경입니다. 자세히 파고 들어 원론적인 부분까지 보자면 모든 숫자는 0과 1로 이루어져 있습니다.
00000000 00000000 00000000 11001000
여기서 0과 1을 비트(bit)라고 부릅니다. 위의 데이터는 8 X 4개의 자릿수로 이루어져 있으며 32 bit라고 부릅니다. 저번에 배운 자료형인 int로 숫자 200을 저장할 경우 메모리, 즉 컴퓨터는 위와 같은 형태로 값을 저장합니다. 숫자에는 정수 소수가 있듯 자료형에도 실수형 자료형이 있습니다. 바로 컴퓨터가 저장하는 200과 200.0의 값은 다르기 때문입니다.
01000011 01001000 00000000 00000000
위의 코드는 200.0입니다. 200과 200.0 모두 같은 숫자이지만 컴퓨터가 받아들이는 200과 200.0은 전혀 다른 숫자입니다. 그러나 프로그래밍을 하다 보면 실수형 자료와 정수형 자료를 함께 사용할 일이 생깁니다. 그렇기에 형변환이 필요한 것입니다.
형변환 사용법
public class CastingSample {
public static void main(String[] args) {
int a = 1.0;
float b = 2.0f;
double c = 3.0;
System.out.println(b);
}
}
▲ 위 사진과 같이 int에 소수값을 지정하니 오류가 나오는 것을 확인하실 수 있습니다. int는 정수값만 저장할 수 있는 자료형이기 때문입니다. 여기서 어떻게하면 소수를 저장할 수 있을지 생각해봅시다. 그렇습니다. 정수형 자료형에 소수를 저장할 수 없습니다. 그러나 소수는 날리고 정수만 출력하는 방법은 있습니다. 바로 숫자 앞에 (int),(float),(double)과 같은 자료형을 넣어주시면 됩니다.
public class CastingSample {
public static void main(String[] args) {
int a = (int)1.2;
System.out.println(a);
}
}
▲ 위와 같이 int 값 1.2 앞에 (int)를 붙여주니 에러가 발생하지 않습니다. 출력된 값을 보면 소수 0.2는 없어지고 정수 1만 출력되는 모습을 확인할 수 있습니다. 이게 바로 명시적 형변환입니다. 처음 듣는 용어를 사용하는데 명시적(의도적) 이렇게 이해하시면 좋습니다.
또한 자동적 형변환이라는 게 있는데 데이터값끼리 더했을 때 그 값이 너무 커지면 자동적으로 데이터형을 바꿔줍니다. JVM에서 자동으로 해주는 기능이며 int 와 int 를 더했을때 값이 너무 커진다면 더 큰 자료형 float 혹은 double 등으로 바꿔주는 것입니다.
과제는 명시적 형 변환과 자동 형 변환에 대해 더 자세하게 공부하고 왜 사용하는지 생각해보세요. 무엇을 비유해서 생각하고 기록한다면 더욱 좋습니다. 많은 분들이 이 과제를 하지 않을 거라 생각합니다. 그러나 정말 프로그래밍을 잘하고 싶은 사람이라면 이러한 사소해 보이는 과제를 성실하고 구체적으로 공부할 것입니다.
'컴퓨터 정보 > 자바' 카테고리의 다른 글
20년 8월 31(월) 자바 첫번째 과제 자바실행환경 구축과 실행화면캡쳐 (0) | 2020.08.31 |
---|---|
자바 강의 11강 - while문과 do while문 (0) | 2020.04.05 |
자바 강의 9강 - switch문 (0) | 2020.04.02 |
자바 강의 8강 - 논리연산자 우선순위 예제 및 boolean (0) | 2020.04.01 |
자바 강의 7강 - if문의 이해 및 활용 (0) | 2020.04.01 |