비전공자를 위한 자바 프로그래밍/Chapter 2. 기초 문법

2.2 여러 가지 연산자 - 2.2.4 데이터 타입의 변환

codecraze111 2024. 11. 22. 17:36

2.2.4 데이터 타입의 변환

 자바는 변수에 데이터를 담습니다. 앞에서 설명한 바와 같이 변수는 특정 데이터 타입의 값을 담는 상자를 말합니다. 그래서 정수 값을 담는 int라는 데이터 타입의 변수에는 2, 3, 4와 같은 정수 값을 대입하고, 실수 값을 담는 float라는 데이터 타입의 변수에는 1.5, 2.3과 같은 실수 값을 대입합니다. 그렇다면 산술 연산자 +, -, *, /를 사용하여 정수 값끼리 계산했을 때는 어떤 값이 나올까요?

[수학 연산 결과]    7 / 2 = 3.5
[자바 연산 결과]    7 / 2 = 3

 

 우리가 배운 수학대로라면 7 나누기 2를 하면 3.5가 나옵니다. 그런데 자바로 프로그래밍하여 7 나누기 2를 하면 3이 나오게 됩니다. 자바에는 변수라는 개념이 있어서 같은 데이터 타입의 변수로 산술 연산을 하면 그 데이터 타입의 값이 나옵니다. 즉, int 변수끼리 연산하면 int 값이, float 변수끼리 연산하면 float 값이 나옵니다. 하지만 서로 다른 데이터 타입의 변수로 산술 연산을 하면 두 데이터 타입 중 나타낼 수 있는 데이터의 범위가 큰 타입으로 값이 나옵니다. 즉, int 변수와 float 변수끼리 연산하면 float 값이 나오게 되죠.

[코드 2-7] 데이터 타입별 연산


 [코드 2-7]에서 볼 수 있듯이 연산 시 정수와 실수를 섞어서 계산하면, 정수는 실수로 변환되어 계산합니다. 표현할 수 있는 수의 범위에 따라 데이터 타입의 종류도 여러 가지가 있습니다. [표 2-1]에서 확인한 바와 같이 정수를 표현하는 데이
터 타입에는 byte, short, int, long 등이 있고, 실수를 표현하는 데이터 타입에는 float과 double이 있습니다. 똑같이 정수를 표현하고, 실수를 표현하는 데도 데이터 타입이 여러 개인 이유는 바로 메모리 때문입니다. 자바에서 변수를 선언하면 메모리 공간에 해당 변수의 데이터 타입만큼 자리가 잡힙니다. 예를 들어, 프로그래머가 1~100000 사이의 정수만 사용하여 연산할 것이라면 90000000000 이상의 정수를 담을 수 있는 long형 변수보다는 int형 변수를 사용하는 것이 더 경제적입니다. 따라서 메모리 공간을 더 효율적으로 이용하기 위해, 사용할 숫자의 크기에 따라 여러 종류의 데이터 타입을 정의하여 사용하는 것입니다.

정수 데이터 타입별 차지하는 메모리 공간

 

 차지하는 메모리 공간의 크기가 작은 데이터 타입에서 큰 데이터 타입으로는 데이터 타입이 다른 변수끼리여도 대입할 수 있지만, 그 반대는 불가능합니다. XS 사이즈의 옷을 입는 여성이 L 사이즈의 옷을 입을 수는 있지만, L 사이즈의 옷을 입는 남성이 XS 사이즈의 옷을 입으면 몸에 맞지 않는 것과 같습니다.

 

담을 수 있는 값의 크기 비교

 

 ( )를 사용하여 ‘(데이터 타입)’이라고 값이나 변수 앞에 쓰면, 해당 데이터 타입으로 강제 변환할 수 있습니다. 이를 ‘캐스트cast’라고 하며, 이때 ( )를 ‘캐스트 연산자’라고 부릅니다.

[코드 2-8] 데이터 타입 변환 연산

실행 결과
3.5
3.5
3.0