[JAVA] 상수와 리터럴(constant & literal) [상수와 리터럴의 정의, 리터럴의 타입과 접미사]

2022. 1. 7. 09:13·◎ Java/Java☕
728x90


1. 상수(constant)

상수(constant)는 변수처럼 '값을 저장할 수 있는 공간'이지만, 변수와 달리 값을 저장하면 다른 값으로 변경할 수 없다.

 

상수를 사용함에 있어 몇 가지 조건이 필요한데 다음과 같다.

1. 선언하는 방법은 변수의 타입 앞에 'final'을 붙여주면 된다.
2. 상수는 반드시 선언과 동시에 초기화해야 한다.
3. 초기화 이후, 상수의 값은 변경할 수 없다.

 

ex)
final int MAX_SPEED;       // 에러. 상수는 선언과 동시에 초기화해야함
final int MAX_SPEED = 10;  // 상수 MAX_SPEED를 선언 & 초기화
MAX_SPEED = 20;	           // 에러. 상수의 값은 변경할 수 없음

* 상수의 이름은 모두 대문자로 하는 것이 암묵적인 관례이며, 여러 단어일 경우 '_'로 구분한다.


2. 리터럴(literal)

우리가 기존에 알고 있던 '상수'의 다른 이름

* 상수를 '값을 한 번 저장하면 변경할 수 없는 저장공간'으로 정의하였기 때문.

 

변수(vairable) : 하나의 값을 저장하기 위한 공간
상수(constant) : 값을 한 번만 저장할 수 있는 공간
리터럴(literal) : 그 자체로 값을 의미하는 것

변수(vairable)와 상수(constant), 리터럴(literal)


3. 리터럴의 타입과 접미사

변수에 타입이 있는 것처럼 리터럴에도 타입이 있다.

 

종류 리터럴 접미사
논리형 false, true 없음
정수형 123, 0b0101, 077, 0xFF, 100L L
실수형 3.14, 3.0e8, 1.4f, 0x1, 0p-1 f, d
문자형 'A', '1', '\n' 없음
문자열 "ABC", "123", "A", "true" 없음

 

10진수 외 2, 8, 16진수를 표현하려면 아래와 같이 리터럴 앞에 접두사를 붙인다.

* 16진수의 경우, 접두사가 '0x'면 'a~f'로, '0X'면 'A~F'로 표현된다.

 

int octNum = 010;	//  8진수 10, 10진수로 8
int hexNum = 0x10;	// 16진수 10, 10진수로 16
int binNum = 0b10;	//  2진수 10, 10진수로 2

 

JDK1.7부터 정수형 리터럴 중간에 구분자 '_'를 넣을 수 있다.

 

long big = 100_000_000_000L;		// long big = 100000000000L;
long hex = 0xFFFF_FFFF_FFFF_FFFFL;	// long hex = 0xFFFFFFFFFFFFFFFFL;

 

실수형에서는 float 타입에는 접미사 'f' 또는 'F'를, double 타입에는 'd' 또는 'D'를 붙인다.

* 실수형에서는 double 타입이 기본 자료형이라 접미사 'd'는 생략이 가능하다.

 

float pi 	= 3.14f;	// 접미사 f 대신 F를 사용해도 된다.
double rate = 1.618d;	// 접미사 d 대신 D를 사용해도 된다.

float pi	= 3.14;		// 에러. float 타입 변수에 double 타입 리터럴 저장 불가
double rate	= 1.618;	// 접미사 d는 생략할 수 있음

 

리터럴에 소수점이나 10의 제곱을 나타내는 기호 E 또는 e, 그리고 접미사 f, F, d, D를 포함하고 있으면 실수형 리터럴로 간주한다.

 

자료형 실수형 리터럴 다른 형태의 동등한 표현
double 10. 10.0
double .10 0.10
float 10f 10.0f
float 3.14e3f 3140.f
double 1e1 10.0
double 1e-3 0.001

 

참고문헌 : 남궁성(2016), Java의 정석, 도우출판

728x90
'◎ Java/Java☕' 카테고리의 다른 글
  • [JAVA] '진법'이란?(numeral system) [10진법, 2진법, 비트와 바이트, 8진법, 16진법]
  • [JAVA] 문자 리터럴과 문자열 리터럴 [String, 덧셈 연산자를 이용한 문자열 결합]
  • [JAVA] 변수의 형태(type) [자료형(data type), 기본형(primitive type)]
  • [JAVA] 변수의 명명 규칙 [식별자(identifier) 명명 규칙, 암묵적인 규칙]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    Error Note
    꿀팁
    jsp
    Java
    spring
    자바스크립트
    SQL
    백준
    Database
    CSS
    일상
    백준 티어
    javascript
    BOJ
    프로그래밍
    코딩
    Project
    Oracle
    html
    코딩 테스트
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[JAVA] 상수와 리터럴(constant & literal) [상수와 리터럴의 정의, 리터럴의 타입과 접미사]
상단으로

티스토리툴바