본문 바로가기

JAVA

[JAVA]03.상수 및 형변환

  • 상수의 선언

- final int MAX = 100; // 변수 선언시 앞에 final 선언 추가

1) 값을 딱 한번만 할당할 수 있다.

2) 한번 할당된 값은 변경이 불가능 하다.

 

- 리터럴(Literals) 상수

1. 정수형 상수의 표현

- java는 왼편 자료형에 관계없이, 정수는 int형으로 표현한다.

 (예) int num = 157; // 157을 int형 정수로 인식

 (예) long num = 3147483647; // 3147483647이 int 형이어야하는데 그 범위를 넘음 => error!!

 

10진수로 int형정수 표현 : int num=11 + 22 +33;

 8진수로 int형 정수 표현 : int num = 011 + 022 + 033;

16진수로 int형 정수 표현 : int num = 0x11 + 0x22 + 0x33;

 2진수로 int형 정수 표현 : int num = 0B11001101;

 

* 수의 표현 및 인식에 도움을 주기 위해 중간에 언더바를 넣는 것도 허용하고 있다.

int num = 12_34_56_78;

 

2. long형 변수의 표현 => 상수 뒤에 l을 붙인다.

(예) System.out.println(3147483647L + 3147483648L);

 

* 자바는 byte형이나 short형 정수의 표현 방법을 제공하지 않는다.

 따라서 byte num = 5; 로 초기화를 허용한다. 물론 범위를 넘어서면 컴파일 오류가 발생한다.

 

3.실수형 상수 

double PI = 3.1415; // 3.1415d 라고 해도 된다.

float PI = 3.1415f; // f 꼭 붙여야함

 

3.4e3 = 3.4 * 10^3

3.4e-3  = 3.4 * 10^(-3) 와 같이 표현하는 것도 가능하다 이들은 double 형 실수이다.

float으로 표현하고 싶으면 뒤에 f를 붙이면 된다.

 

  • 형변환 - 데이터타입에 따라 연산 방법이 다르기 때문에 자료형을 하나로 일치시키는 과정을 거쳐야한다.

1. 자동 형 변환 : programmar가 명시하지 않음, 필요한 상황에 자동으로 형변환이 일어난다.

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

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

*데이터의 손실 없이 가능하다.

 

<자동 형 변환이 이뤄지는 방향>

byte => short/char => int => long => float => double

 

(예) double num1 = 30; // int 형 정수 30 => double 형으로 자동변환

(예) System.out.println(5945456L + 34.5); // long형 정수 5945456 => double 형으로 자동변환

 

2. 명시적 형 변환 : 자동 형 변환이 진행되지 않는 상황에서도 필요에 의해 형변환이 이뤄지도록 할 수 있다.

* 보통 데이터의 손실이 발생한다.

 

(예) double PI = 3.1415;

      int wholeNum = (int)PI; // 소수점 이하는 사라진다. 

* 그냥하면 에러나나..?