ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바] 상수와 형 변환
    java 2019. 3. 13. 14:34

    상수 : 한 번 값이 정해지면 변하지 않는 수


    변수를 선언할 때 앞에 final 을 선언하면 그 변수는 상수가 된다.

    상수는 한 번만 값을 넣을 수 있고, 한 번 할당하면 값을 변경할 수 없다.


    그럼 값을 변경하지도 않는 상수를 왜 사용하는가?


    단순하게 생성된 클래스라면 상관 없겠지만 엄청나게 복잡한 코드에서 의미를 바로 파악할 수 없는 숫자 등을 넣어놓고


    주석으로 사용 이유등을 달지 않으면 시간이 한참 흐른 후에 다시 보거나 또는 다른 개발자가 이어서 개발을 해야할 때


    그 의미를 파악하기 쉽지 않게된다.


    그럴 때 의미를 바로 파악할 수 없는 숫자를 상수로 선언하고 그 자리에 상수를 넣어주면 의미 파악이 쉬워질 수 있다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class FinalExam {
        public static void main(String[] args) {
            final int SUBTRACT_INT_VALUE = 3;  // 상수를 선언하고 값을 바로 넣었다. 값을 넣으면 더이상 변경할 수 없다.
            final int FIRST_INT;    // 상수를 선언만 했다. 값은 추후에 한 번만 넣을 수 있다.
            final int SECOND_INT;
            FIRST_INT = 6;
            SECOND_INT = 9;
     
            // result 변수에 연산 결과를 저장해준다.
            int result1 = (FIRST_INT + SECOND_INT) / 3;                  // 3으로 나누었다. 
            int result2 = (FIRST_INT + SECOND_INT) / SUBTRACT_INT_VALUE; // 3을 넣어준 상수 SUBTRACT_INT_VALUE 를 이용.
            
            System.out.println("(" + FIRST_INT + "+" + SECOND_INT + ")"  // 이런식으로 한 문장이지만
                             + "/" + SUBTRACT_INT_VALUE+ "=" + result1); // 너무 길어지면 줄바꿈을 해서 사용하기도 한다.
     
            System.out.println("(" + FIRST_INT + "+" + SECOND_INT + ")" + "/" + SUBTRACT_INT_VALUE+ "=" + result2);
        }
    }
    cs



    위 예제처럼 result1,2 에서 값을 나눌 때 3으로 직접 나눠도 되지만 상수나 변수값에 3을 저장하고 그 상수나 변수를 이용해서 나눠주는게 의미 파악면에서 좋을 수 있다.

    변수명이나 상수명은 누구나 인식하기 쉬운 의미로 정해주는것이 좋다.



    ☆ 상수 선언시 주의할 점

    1. 상수명은 대문자로 써야한다.

    2. 단어 사이는 띄어쓰기를 사용하지 않고 _(언더바)를 사용한다.



    컴파일러는 기본적으로 그냥 정수를 쓰면 int 형으로 인식한다.


    int형의 표현 범위를 넘어설 경우 에러가 난다.

    (참고) int 표현 범위 : -2,147,483,648 ~ 2,147,483,648


    이 범위를 넘어설 경우 long 형으로 지정해줘야한다.



    실수형 상수를 표현할 수도 있다.

    실수는 float 과 double 이 있다. 범위는 double이 더 크다.


    final double PI = 3.14;


    이런식으로 double 형을 지정하고 실수를 넣어준다.


    boolean형 상수는 true 와  false 값을 가질 수 있다.


    char형 변수는 한 글자만 넣어서 사용.



    그외에 알아 둘 문자.

    이스케이프 시퀀스(escape sequences)

     '\b'

    백스페이스 문자 

     '\t'

    탭 문자 

     ''

    백슬래시 문자 

     '\''

    작은따옴표 문자 

     '\"'

    큰따옴표 문자 

     '\n'

    개 행 문자 




    형 변환


    자바에서는 int형과 double 형을 그냥 더할 수 없다.

    두 변수의 자료형을 하나로 일치시키는 과정이 필요하다. 이러한 과정을 형 변환이라고 한다.


    두 가지의 형 변환이 있다.


    자동 형 변환과 명시적 형 변환이 있다.


    자동 형 변환 : 필요한 상황에서 자동으로 형 변환이 일어난다.

    두 가지 규칙에 근거해서 발생한다.

     1. 자료형의 크기가 큰 방향으로 형 변환이 일어난다.

     2. 자료형의 크기에 상관없이 정수 자료형보다 실수 자료형이 우선한다.


    ※ 자동 형 변환이 일어나는 방향

    byte -> short -> int -> long -> float -> double

               char  ->


    1
    2
    3
    4
    5
    6
    7
    8
    class CastingPractice {
        public static void main(String[] args) {
            int num1 = 10;
            double num2 = 3.14;
            
            System.out.println(num1 + num2);
        }
    }
    cs


    int 10과 double 3.14를 더하기 연산 하면 결과는 13.14가 나온다.


    이렇듯 자동으로 형변환이 진행 된다.



    명시적 형 변환 : 임의적으로 형변환을 시켜줄 때 사용.

    자동 형 변환이 되지 않을 때에는 명시적으로 형변환을 시켜주어야 한다.

    double pi = 3.14;


    int castingPi = (int)pi;


    1
    2
    3
    4
    5
    6
    7
    8
    class CastingPractice {
        public static void main(String[] args) {
            double pie = 3.14;
            int castingPi = (int) pie;
            
            System.out.println(castingPi);
        }
    }
    cs



    결과는 정수 3이 출력된다.


    큰 자료형에서 작은 자료형으로 형변환 할 때는 상위 바이트가 잘려 나가기 때문에 예상과 다른 값이 나올 수 있다.

    알 수 없는 값으로 변환되어 버릴수도 있기 때문에 주의해야한다.


    'java' 카테고리의 다른 글

    [자바] 연산자1  (0) 2019.03.20
    [자바] 자바의 기초  (0) 2019.03.12

    댓글

Designed by Tistory.