Day02 - 기본 자료형 및 형 변환 Type Casting

2021. 2. 17. 01:11JAVA 공부

기본 자료형

데이터 유형(자료형)에 대해서 조금 알아봅시다.

저번에 데이터 유형의 크기와 범위 종류에 대해서 알아봤는데요

이번에는 어떤 데이터 유형을 많이 사용하는지 알아봅시다

 

정수형 데이터 유형에서는 int

실수형 데이터 유형에서는 double

 

기본적으로 정수형 데이터 int 를 사용하는 이유는, windows의 소프트웨어(프로그램), 운영체제 등이 32bit(x64)로 되어 있는 걸 확인 할 수 있습니다.

 

현재는 64bit(x84) 운영체제도 많이 사용하지만, 프로그램 언어가 개발 됐을 당시에 32bit 운영체제를 사용해서 다양한 소프트웨어(프로그램)을 만들었기 때문에 32bit가 기본적으로 설정이 되어 있다고 해요.

 

그래서 int ( 4byte ) = 32bit 이기 때문에 int 가 기본적으로 설정이 되어 있습니다

이 말은 ... System.out.println(3); 여기서 3은 상수(변하지 않는 수)죠.

이 3 이라는 상수에도 기본적으로 적용된 데이터 유형이 있는데 그게 바로 int 입니다.

그래서 long 을 쓰게 될 경우에는

ex ) long L = 321421L;

상수 뒤에 L을 붙여야 합니다. 상수도 기본적으로 int로 되어 있기 때문에 long형 상수라고 지정을 해주는 거죠.

 

그 다음은 실수형 데이터 double 가 기본적으로 사용되는 이유인데요.

위의 정수형 데이터 int처럼 32bit에 맞는 float을 써야 한다고 생각이 들텐데, float이 기본적으로 사용되지 않고 double 를 사용하는 이유는 , 값을 표현하는 범위가 float보다 double가 크기 때문입니다.

정수형 데이터 long ( 8byte ) 보다 실수형 데이터 float ( 4byte ) 가 표현하는 범위가 큽니다.

그런데 4byte를 2byte 2byte로 나눠서 , 2byte 는 정수. 2byte 는 실수 를 표현하기로 약속되어 있는데, 실수는 1과 2 사이에 무수히 많은 수가 있죠? 이렇게 무수히 많은 수를 float 이라는 데이터 유형으로 사용 하는 것보다 더 큰 double 로 사용하는게 데이터를 다루는데 있어서 안정적 이기 때문에 실수형 데이터 유형에서는 double를 기본적으로 사용하고 있습니다.

 

때문에 float 을 사용할 때에는 뒤에 f(F)를 붙여줘야 합니다.

ex ) float f = 3.14F;

 

데이터 유형 변환 Type Casting

 

데이터 유형은 자동 형변환 과 명시적 형변환 으로 나뉘어져 있습니다.

 

자동 형변환 이란 말 그대로 자동적으로 형 변환 되는 건데, 보통 작은 크기의 데이터 유형에서 큰 데이터 유형으로 형 변환이 이루어 집니다.

명시적 형변환 이란 보통 큰 데이터 유형에서 작은 데이터 유형으로 형변환이 이루어 집니다.

자동 형변환이 되지 않는 이유는, 큰 데이터 유형에서 작은 데이터 유형으로 넘어가는 상황이 될 경우 데이터를 손실 할 수 있는 가능성이 있기 때문입니다.

int a = 1000;

byte b = (byte)a;

이 경우에 결과값이 -24 임을 확인 할 수 있습니다. 이처럼 데이터가 손실 되어 예상할 수 없는 데이터(쓰레기값)가 될 수 있기 때문에, 명시적 형변환을 해주어야 합니다. ( 명시를 하면서 한번 더 확인을 해보라는게 아닐까 싶습니다 )

 

그리고 예외상황이 하나 있는데, char ( 2byte ) 와 short ( 2byte ) 입니다.

겉으로만 보면 같은 2byte 이기 때문에 자동 형변환이 될 것 같지만, 데이터 범위가 다르기 때문에 명시적으로 변환을 해주어야 합니다. char 는 음수가 없이 양수만 표현하고 , short 음수와 양수를 표현하기 때문.

 

이렇게 정수와 실수의 기본 자료형과 데이터 유형 형변환(Type Casting) 에 대해 알아 봤습니다.

 

고생하셨습니다.