티스토리 뷰

그럼 java강좌를 이어가도록 하겟습니다 ㅋ


상수라는 용어는 이 강좌에서 처음 등장한 것이 아닙니다

우리들은 전 강좌에서 상수를 사용했습니다


int no1=7777;

ini no2=4+5;


전 강좌에서 자주본 구문들 입니다

위 구문에도 상수가 존재하는대 7777과 4와 5 총 3개의 상수가 등장하였습니다

이처럼 상수는 (제가 언급을 했는지 모르겠습니다) 처음 등장한 용어가 아닙니다



그렇다면 왜 이름이 상수일까요? 변수도 있는대 말이죠..

이유는 변수처럼 메모리 공간에 할당되어 저장은 되지만 변수처럼 값을 이리저리 바꾸지 못하기 때문입니다

이름이 주어지지 않기 때문에 값을 변경할수도 없는것 입니다

그리고 상수는 필요가 없어지게 되면 바로 제거 됩니다

메모리 공간에 남아있는 변수와는 다른 상수만의 특징이 되겠습니다 ㅋ


그렇다면 상수는 어떻게 메모리 공간에 저장이 될까요?

전 강좌에서 정수를 저장할때는 int자료형을, 실수를 저장할때는 double자료형으로 작업한다고 했습니다

그러므로 java는 모든 정수형 상수를 int 자료형으로 메모리 공간에 저장합니다

마찬가지로 모든 실수형 상수를 double 자료형으로 저장하겠죠?



그럼 여기서 문제를 하나 내보도록 하겠습니다

10000000000은 어떻게 메모리 공간에 저장할까요?

전 강좌에서 언급을 하진 않았지만 int형의 값 표현 범위는 -2147483648 ~ 2147483648 까지의 숫자만 저장할수 있습니다

그러므로 10000000000은 int형에는 저장할수 없는 범위이지요


값의 표현범위를 넘어서기 때문에 우리는 int보다 표현 범위가 넓은 long형 변수에 저장해야 합니다


long number=10000000000;


이렇게 변수 선언을 하면 정상적으로 컴파일이 될까요?


아닙니다 10000000000은 long변수에 넣을수 있음에도 컴파일러는 오류를 품게 되는군요

그 이유를 간단히 설명해 드리자면 java는 별도의 표시가 없으면 무조건 정수는 int형, 실수는 double으로 표현한다는 것입니다

그래서 long형 변수를 선언했음에도 불구하고 java는 int형에 넣으려 하는것 이지요


위같은 이유로 이 숫자를 long형 변수에 넣을것 이다 라는 별도의 문구를 넣어줘야 합니다


long number=10000000000L;


이렇게 숫자 마지막에 접미나 L을 넣어주시면 컴파일 에러가 발생하지 않습니다

이 접미사 L은 소문자로 써도 되며 이 정수를 long형 변수로 표현하겠습니다 라는 뜻이 됩니다


마찬가지로 float변수에도 위와 같은 문제가 발생하게 됩니다


float number=5.73;


이런 구문이 있는 java파일을 컴파일 해보면 또 문제가 발생합니다

5.73은 float에도 저장될수 있는 값인대 말이죠..


이경우에도 java는 무조건 실수는 double으로 표현하려 하기 때문입니다

그래서 오류가 났던것 입니다


float number=5.73F;


이렇게 float변수에도 마지막에 F를 넣어서 이 실수를 float에 넣겠다는 표시를 해야만 오류가 없이 진행됩니다

이때 F도 소문자로 표현해도 가능합니다



한번 소스를 보며 정리해 보도록 하겠습니다


class doubleint {
  public static void main(String[] args)
  {
    double n1=4.32;
    float n2=3.65f;
    long n3=10000000000L;
    long n4=32;

    System.out.println(n1);
    System.out.println(n4);
  }
}


doubleint.java


소스를 보게 되면 float 변수의 마지막에 f를 붙히는 것을 알수 있습니다

또한 long n3에서도 L을 붙혀 long형 변수로 표시할 거라는 것을 알려주고 있습니다



이렇게 말이죠 ㅋ

(System.out.println을 귀찮아서 많이 안만들었습니다 연연하지 마시길)


여기서 long n4=32를 보면 변수(long)와 변수를 초기화 하는 상수의 자료형(int)가 일치하지 않는것을 볼수 있습니다

하지만 컴파일과 실행은 정상적으로 됩니다

왜 그럴까요? 오류가 발생해야 정상일탠대..


그 이유는 나중에 자동 형 변환 이라는 것을 배우게 되면 이해하실수 있으실 겁니다

지금은 int형 자료형이 자동으로 long으로 변환되었다는것만 알아두세요 ㅎㅎ



이렇게 상수에 대해 알아보고 상수를 저장하는 방법이 자동으로 바뀌며 어떤 경우는 접미사를 붙혀야 된다는 점을 알게되었습니다

원래는 이어서 아래에 자료형의 변환에 대해 알아봐야 하지만 강좌가 길어지는 바람에 다음 편에서 포스팅 하도록 하겠습니다 ㅎㅎ


그럼 오늘은 이만 ~

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
댓글
댓글쓰기 폼