본문 바로가기
JAVA/언어입문

JAVA 상수(final)/리터럴/형변환(casting)

by Sunyoung95 2022. 3. 3.
상수(Constant)
  • 코드 내에서 final로 선언
  • 변수와는 반대로 프로그램 도중에는 수정불가
  • 사용 목적
    • 프로그램 내에서 변경되지 않아야 하는 값을 상수로 선언해두고 혹시 변경되는 경우 선언된 값만 수정
  • 코드예시
    final double PI = 3.14;
    final int Max_num = 100;
    
    PI = 5.55;  // error 프로그램 도중 변경 불가

 

리터럴(Literal)
  • 프로그램에서 사용하는 모든 숫자, 값, 논리값
    • 변수나 필드에 지정할 수 있는 값 (예 : 1, 'A', "hello", 3.14, True)
  • 종류 : 정수, 실수, 문자, 논리, 문자열
  • 리터럴에 해당하는 값은 상수풀(constant pool)에 저장되고 필요한 경우 상수풀에서 가져와서 사용한다.

리터럴과 상수풀 그리고 변수

  • 상수풀(constant pool)에 저장시 정수는 int, 실수는 double로 저장된다.
    • long / float로 저장할하려는 경우 식별자(L/l, F/f)가 필요하다.
  • 더보기
    힙 영역의 Permanent area(고정 영역)에 생성되어 JAVA 프로세스의 종료까지 계속 유지되는 메모리 영역.
    기본적으로 *JVM에서 관리하며 프로그래머가 작성한 상수에 대해서 최우선적으로 찾고 없으면 상수풀에 추가한 후 그 주소값을 리턴한다.

    *JVM 참고 글 : https://asfirstalways.tistory.com/158

 

형변환(Casting)

  • 묵시적 형변환
    • 작은수 -> 큰수
    • 정수 -> 실수
    • int num = 3;
      long LNum = num;  // 4byte -> 8byte
  • 명시적 형변환
    • 묵시적 형변환의 반대
    • 반드시 변환되는 자료형 명시
    • 자료의 손실 발생가능
    • int iNum = 1000;
      byte bNum = (byte)iNum; 
      
      System.out.println(bNum);  // -24 : 4byte -> 1byte로 자르면서 값이 변함(자료손실)

댓글