본문 바로가기

프로그래밍 언어/JAVA

[Java] 형변환(Casting)

정수, 실수를 표현하는데 있어서 데이터 타입이 다양한 이유는 메모리 때문이다. 자바에서 변수를 선언하면 해당 변수의 데이터 타입만큼  메모리 공간이 할당된다. 메모리 공간을 더 효율적으로 이용하기 위해 사용할 데이터의 크기에 따라 다양한 종류의 데이터 타입을 정의하여 사용한다. 여기서 형변환(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