-
[자바] 상수와 형 변환java 2019. 3. 13. 14:34
☆ 상수 : 한 번 값이 정해지면 변하지 않는 수
변수를 선언할 때 앞에 final 을 선언하면 그 변수는 상수가 된다.
상수는 한 번만 값을 넣을 수 있고, 한 번 할당하면 값을 변경할 수 없다.
그럼 값을 변경하지도 않는 상수를 왜 사용하는가?
단순하게 생성된 클래스라면 상관 없겠지만 엄청나게 복잡한 코드에서 의미를 바로 파악할 수 없는 숫자 등을 넣어놓고
주석으로 사용 이유등을 달지 않으면 시간이 한참 흐른 후에 다시 보거나 또는 다른 개발자가 이어서 개발을 해야할 때
그 의미를 파악하기 쉽지 않게된다.
그럴 때 의미를 바로 파악할 수 없는 숫자를 상수로 선언하고 그 자리에 상수를 넣어주면 의미 파악이 쉬워질 수 있다.
123456789101112131415161718class 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 ->
12345678class 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;
12345678class 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