정수, 실수를 표현하는데 있어서 데이터 타입이 다양한 이유는 메모리 때문이다. 자바에서 변수를 선언하면 해당 변수의 데이터 타입만큼 메모리 공간이 할당된다. 메모리 공간을 더 효율적으로 이용하기 위해 사용할 데이터의 크기에 따라 다양한 종류의 데이터 타입을 정의하여 사용한다. 여기서 형변환(Casting)은 값의 자료형을 변환하는 것을 말한다. 값의 자료형을 왜 변환해야할까? 그 이유는 컴퓨터의 값 처리 원칙을 위배하는 경우 이를 해결하기 위해서이다.
>> 묵시적 형변환(자동 형변환)
변수는 특정 데이터 타입의 메모리 공간를 의미하고, 이 공간에 데이터를 담아서 사용한다. 자바에서 산술 연산자 '/ (나누기)' 를 사용하여 정수 값끼리 연산하면 우리가 배운 수학과 다른 연산이 수행된다. 5 나누기 2 의 결과는 2.5가 아닌 2가 출력된다. 변수의 연산은 같은 데이터 타입끼리 산술 연산을 하면 그 데이터 타입의 값이 나온다. 즉, 정수형(int)끼리 연산하면 정수형으로, 실수형(float)끼리 연산하면 실수형으로 출력된다. 단, 값의 범위가 서로 다른 데이터 타입의 변수로 산술 연산을 할 경우, 컴파일러가 자동으로 작은 자료형을 큰 자료형으로 변환하여 값이 나온다.
*단, byte와 short 자료형값의 계산결과는 무조건 int로 처리한다.
>> 명시적 형변환(강제 형변환)
데이터 값의 범위가 큰 자료형을 작은 자료형으로 변환하고 싶을 때, '(자료형)'의 형태를 사용하여 강제로 자료형을 변환하는 것이 가능하다. 이를 명시적 형변환(강제형변환)이라고 한다. 이 때, 데이터 값의 손실이 발생할 수도 있지만, 값의 범위와 관계없이 원하는 자료형으로 변환하고자 할때 사용가능하다.
예) double temp = 1.1;
int num = (int)temp; //int형(4byte) num에 double형(8byte)대입하고자, 강제형변환
System.out.println(num); // 소수점 사라진 정수 1출력
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[Java] 스택과 힙, JVM 메모리구조 (0) | 2022.08.13 |
---|---|
[Java] 자바의 연산자 (0) | 2022.08.09 |
[Java] 메서드 (0) | 2022.08.03 |
[Java] 변수의 종류 (0) | 2022.08.01 |
[Java] 변수와 데이터타입 (0) | 2022.07.30 |