반응형

JAVA에 대한 예제들을 보며 공부를 하다가 다음과 같은 코드를 보게 되었습니다.

 

long형 변수 2개를 선언해주고 각각의 값을 지정해준 후 이를 출력해주는 간단한 코드입니다.

 

그런데 line8의 distance 값을 할당해주는 부분에서 365L을 곱해주는 부분이 있습니다.

 

수를 곱해주는 것이 아닌 수 뒤에 'L'은 무엇을 나타낼까요?

 

 

기본적으로 자바는 모든 정수를 int형으로 나타냅니다.

예를들어

int a = 1000000000000;

위의 코드는 컴파일이 되지 않습니다. int로 표현할 수 있는 범위를 벗어난 것이지요.

 

그럼 자료형의 범위를 넓혀봅시다.

long a = 1000000000000;

long 형 변수의 범위에는 포함되나 위의 코드 역시 에러를 발생시키게 됩니다.

 

자바는 수를 변수에 저장하기 전에 메모리에 저장하게 되는데 이때, 메모리에 저장하는 형태가 int형 입니다.

그리고 이러한 경우에 long 변수에 int범위 밖의 변수를 할당해주기 위해 값 뒤에 'L'을 붙여주게 됩니다.

 

long a = 1000000000000L;

 

그러면 자바에서 이 수를 int형이 아닌 long 형으로 나타내라고 지시를 하게 됩니다.

그리고 이 때, L을 접미사라고 표현합니다.

 

그럼 자바에서 사용되는 접미사는 'L'밖에 없을까요?

 

 

앞의 과정에서 정수가 처리되는 과정을 살펴봤으니 이제 실수가 처리되는 과정을 봅시다.

 

자바에서는 기본적으로 실수를 double형으로 나타냅니다.

따라서

float a = 1.2;

위의 코드를 살펴보면 자바에서는 먼저 1.2를 double형으로 나타내는데 이를 float변수에 저장할 경우 제대로 값을 저장하지 못한다는 문제가 발생합니다.(double형: 8바이트, float형: 4바이트)

 

그렇기에 float형 변수에 실수를 저장할 때에는 접미사 F를 붙여주게 됩니다.

 

즉, 위의 코드는

float a = 1.2F;

위와 같이 표현될 수 있고 JAVA에서는 기본적으로 실수를 double형으로 저장하기 때문에 기본적으로 실수 변수를 double로 선언하는 것이 좋습니다.

반응형

+ Recent posts