지금까지 변수를 배웠으니 이제 상수를 배워볼 차례이다.
이 포스팅에서는 상수와 리터럴 그리고 형 변환에 대해서 공부할 것이다.
상수는 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미한다.
영어로는 constant 라 하며 '변하지 않는 수'이다.
이는 변수와는 반대로 프로그램이 실행되는 동안(선언과 값을 동시에 했을 시) 값을 변경할 수 없다.
쉽게 말해 다시 재정의 나 변경이 불가능하며 변환되지 않는 값을 칭한다.
프로그램에서 상수를 선언 방법은 변수와 동일하며 단지 앞에 FINAL이라는 키워드를 사용한다.
이 키워드를 사용하면 변수는 상수가 되며 변할 수가 없다.
상수는 반드시 선언과 동시에 초기화를 해야 하며 위에서 계속 말했듯이 상수값을 변경하는 것은 허용되지 않는다.
예를 들어보자
ex)
final int MAX_SPEED = 10; // OK. 상수 선언과 초기화가 동시에 됨
final int MAX_VALUE; // ERROR. 상수 선언과 초기화가 동시에 안되어 있음
MAX_SPEED = 20; // ERROR. 상수 값은 변할 수가 없다.
*모든 상수의 이름은 대문자로 사용하는 것이 관례이며 여러 단어로 구성시 '_' 로 구분시켜준다.
리터럴(literal) : 프로그램에서 자바 언어가 처리하는 실제 데이터 즉 숫자, 값 논리 값을 통틀어 칭한다.
즉 리터럴은 변수의 값이 변하지 않는 데이터(메모리 위치 안의 값)를 의미한다.
ex) 10, 3.14, 'A', true...
원래 이 예들은 상수인데 프로그래밍 언어상 구분을 위해서 다른 단어로 불어야 했기에 리터럴
이라고 정의를 하였으나 상수와 같은 의미를 가진 다른 이름일 뿐이다
각 데이터형 마다 리터럴을 다르게 표현하니 주의하도록 하자.
모든 리터럴은 상수 풀에 저장되어 있다.
* 상수 풀: 힙 영역의 Permanent area(고정 영역)에 생성되어 Java 프로세스의 종료까지 계속 유지되는
메모리 영역
기본적으로 JVM에서 관리하며 프로그래머가 작성한 상수에 대해서 최우선 적으로 찾고 없으면
상수 풀에 추가한 후 그 주소 값을 리턴한다
변수 vs 상수 vs 리터럴
변수(variable) 하나의 값을 저장하기 위한 공간
상수(constant) 값을 한번만 저장할 수 있는 공간
리터럴(literal) 그 자체로 값을 의미하는 것
상수가 필요한 이유
형 변환
서로 다른 자료형의 값이 대입되는 경우 형 변환이 일어난다.
형 변환에는 두 가지 유형이 있는데
이는 묵시적 형 변환(implicit type conversion)과 명시적 형 변환(explicit type conversion)이 있다.
묵시적 형 변환은 작은 수에서 큰 수로 이동한다.
즉 다시 말해 덜 정밀한 수에서 더 정밀한 수로 대입이 되는 경우를 뜻한다.
명시적 형 변환은 변환되는 자료형을 명시해야 한다.
이는 자료의 손실이 발생할 수가 있다.
typecasting을 해 주어야 한다.
자세한건 다음 페이지에 따로 정리 해 두겠다.
[FOR문]을 활용하여 크리스마스트리를 만들어 보자.-2- (0) | 2019.12.25 |
---|---|
[FOR문]을 활용하여 크리스마스트리를 만들어 보자. (0) | 2019.12.25 |
예약어 (0) | 2019.12.01 |
기본 자료형 (0) | 2019.11.24 |
클래스, 객체 , 인스턴스의 차이 (0) | 2019.11.24 |
댓글 영역