일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Spring 커맨드 객체
- properties 파일 주입
- Spring 객체로 주입받기
- Mybatis 오류
- Spring
- JSR - 303
- 자바 List
- 코드로 배우는 스프링 웹 프로젝트
- 자바오류
- 자바
- Spring Cookie
- 스프링 인터셉터
- DDL DROP
- Spring MVC5 기본 세팅
- JSR - 380
- properties 파일
- properties 변수
- Servlet cookie
- 오라클 TRUNCATE
- 스프링 파라미터 추출
- 오라클 CREATE
- 자바스크립트
- collection framework
- Spring MVC Interceptor
- annotation
- 오라클 DROP
- Spring message
- ddl alter
- Dependency Injection
- DDL TRUNCATE
- Today
- Total
개발이좋아
[Java] 상수와 리터럴 본문
상수
상수란 변수의 반대개념으로서 변하지 않는 수를 의미한다.
프로그래밍에서는 값이 변할 수 있는 변수 외에도 수학 공식의 사용하는 고정된 값 예를들어 원의 넓이를 구할 때 사용하는 원주율 처럼 변하지 않는 수도 필요하다.
상수는 예를들어 π(3.14)나 1년 12개월 같은 개월 수 등 이렇게 변하지 않는 값이다.
자바에서는 상수를 final 예약어를 사용해서 선언한다.
final double PI = 3.14
final int MONTHS = 12;
상수명은 대문자를 주로 사용하고 여러 단어를 연결하는 경우에는 ' _ ' 같은 언더바 기호를 사용하면 가독성을 높일 수 있다.
또한 상수는 값이 변하지 않기 때문에 선언과 동시에 초기화를 해주는 것이 좋다.
상수는 프로그램 내부에서 반복적으로 사용하며 값이 변하지 않야하는 경우 값을 상수로 선언하여 사용하면 편리하다.
리터럴
리터럴(literal)은 프로그램에서 사용하는 모든 숫자,문자 논리값을 일컫는 말이다.
int num = 10;
char c = 'A';
final double PI = 3.14;
위의 코드에서 10, 'A', 3.14와 같은 문자와 숫자를 '리터럴' 혹은 '리터럴 상수'라고 한다.
리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정한 메모리 공간인 상수 풀(constant pool)에 놓인다.
예를 들어 int num = 3; 문장에서 값 3이 메모리 공간 어딘가에 존재해야만 num 변수에 그 값을 복사할 수 있다.
즉 숫자가 변수에 대입되는 과정은 숫자 값은 메모리 어딘가에 존재하고 이 숫자 값이 다시 변수 메모리에 복사되는 것이다.
주의해야 할 점은 자바에서 정수를 표현하는 메모리의 기본 크기는 4바이트이다.
이 크기는 상수 풀에서도 마찬가지여서 long형과 같은 8바이트 크기를 가지고 있는 자료형은
4바이트에 들어갈 수 없기 때문에 long형 8바이트로 처리하라고 컴파일러에게 알려주어야 한다.
따라서 '이 리터럴은 long형으로 저장해야 한다고 리터럴뒤에 L이나 l을 명시해 주어야한다.
실수 리터럴은 정수 리터럴과 반대로 모든 처리가 double(8바이트)형으로 처리된다.
float pi = 3.14; 와 같은 경우 3.14는 double형이고 변수 pi는 float형이므로 값을 대입할 수 없다.
따라서 3.14가 float형으로 처리되도록 3.14 뒤에 식별자 f나 F를 붙여줘야 한다.
float pi = 3.14; //오류가 발생한다.
float pi = 3.14F; //리터럴뒤에 식별자를 붙여주어야 한다.
"본 포스팅은 필자가 공부한 것을 정리한 것으로 오류가 존재할 수 있습니다."
'Java' 카테고리의 다른 글
[Java] 람다식 (0) | 2019.11.29 |
---|---|
[Java] 제어문1 - 조건문 (0) | 2019.11.27 |
[Java] 형 변환 (0) | 2019.11.24 |
[Java]javax.naming.NamingException 오류 (0) | 2019.11.22 |
[Java]java.io.FileNotFoundException 오류 (0) | 2019.11.22 |