관리 메뉴

커리까지

상수와 리터럴, 변수의 형 변환 본문

자바

상수와 리터럴, 변수의 형 변환

목표는 커리 2021. 6. 9. 05:07
728x90
SMALL

상수 선언하기

  • final 예약어를 사용하여 선언
  • 중간에 바꿀 수 없음
  • 변하지 않는 수이기 때문에
  • 선언과 동시에 초기화
  • 대문자로 많이 씀
final int MAX_NUM = 100;

MAX_NUM = 0;
  • 이렇게 쓰면 오류 발생
final int MAX_NUM = 100;
final int MIN_NUM;

MIN_NUM = 0;
  • 이런식으로 초기화하고 초기값이 없으면 나중에 선언해줘야 함

리터럴(literal)

  • 숫자, 문자, 논리값
  • 상수 풀에 존재
  • 정수 리터럴은 int, 실수 리터럴은 double
  • 정수 범위 넘어가면 long이니깐 l, L
  • 실수도 범위 넘어가면 float니깐 f,F
  • 언제 메모리에 위치하는가?
    • 프로그램이 하드디스크에 load되면 프로그램중에 일부는 메모리를 할당받는게 있음
    • 프로그램이 load되는 순간 어떤 영역을 잡는 게 있음
      • 상수, static
      • 상수가 잡는 영역을 data area라고도 부름
    • 프로그램이 엑시트 될 때 사라짐

형 변환

  • 모든 자료형이 동일한 크기가 아님
  • 표현 방식도 다름
  • 같은 병이랑 연산을 수행애햐 함
  • 묵식적 형변환
    • 자동으로 형변환
    • 작은 크기에서 큰 형 변환
    • 작은 메모리에서 큰 메모리로 형 변환
    • 덜 정밀한 거에서 더 정밀한 것으로
      • 정수가 실수로
  • 명시적 형변환
    • 프로그래머가 프로그램안에서 타입 캐스팅 함
byte bNum = 125;
int iNum = 255;

System.out.println(iNum);
  • 이건 오류가 발생하지 않음
int iNum = 255;
byte bNum = iNum;

System.out.println(iNum);
  • 이건 오류 발생
int iNum = 255;
byte bNum = (byte)iNum;

System.out.println(iNum);
  • 이렇게 캐스팅 해줘야함
double dNum = 3.14;
int inum = (int)dNum;
System.out.println(inum);
>
3
  • 소수점이 짤림
double dNum = 1.2;
float fNum = 0.9F;

int iNum1 = (int)dNum + (int)fNum;
int iNum2 = (int)(dNum + fNum);

System.out.println(iNum1);
System.out.println(iNum2);
>
1
2
  • 형 변환을 언제 하느냐에 따라 값이 달라진다.

  • iNum1은 먼저 형 변환을 했기 때문에 1과 0이 더해져서 1

  • iNum2는 먼저 더하고 형 변환이 된거기 때문에 2.1이 2로

728x90
LIST

'자바' 카테고리의 다른 글

자바의 연산자들-2  (0) 2021.06.13
자바의 연산자들-1  (0) 2021.06.11
자료형(data type)  (0) 2021.06.05
변수에 대해서  (0) 2021.06.05
컴퓨터에서 자료 표현하기  (0) 2021.06.04