변수(Variable)와 상수(Constant) 그리고 리터럴(Literal)

Mixer·2022년 5월 11일
0
post-thumbnail

🧑🏻‍💻 코드스테이츠에서 공부한건 모자른거같기도하고 아무래도 기초가 튼튼하면 뒤에도 더 이해가 쉬울거같아
오늘 다시 변수 등 기초에 대해 복습 및 블로깅을 할 예정이다.
물론, 처음부터 완벽한 포스팅이 되면 좋지만 언제든지 다시 깨닫게되면 수정을 거칠 예정이다.


변수(Variable)

변수란 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 말한다.

String name = "Minthug"; 를 할당한 name이 바로 변수이다.

  • 메모리에 데이터의 저장 공간을 확보한다
  • 다른 개발자와 협업 시에 데이터에 이름(변수)을 붙여서 원활하게 소통한다.
  • 데이터를 재사용한다.

변수의 이름 생성 규칙

변수뿐만 아니라 클래스, 메소드 등의 이름을 짓는데 반드시 지켜야할 규칙이 있다고 한다.

  • 변수의 이름은 영문자(대소문자),숫자,언더스코어( _ ), 달러($)로만 구성할 수 있다.
  • 변수의 이름은 숫자로 시작할 수 없다.
  • 변수의 이름 사이에는 공백을 포함할 수 없다.
  • 변수의 이름으로 자바에서 미리 정의된 키워드는 사용할 수 없다.

    ⚑변수의 이름은 해당 변수에 저장될 데이터의 의미를 잘 나타내도록 짓는것이 좋다

변수의 종류 🔥

  • 기본형(primitive type) 변수
  • 참조형(reference type) 변수

기본형 변수는 실제 연산에 사용되는 변수이다
자바에선 8가지 종류의 기본형 변수가 제공되고 있다.

정수형 : byte,short,int,long
실수형 : float, double
문자형 : char
논리형 : boolean

참조형 변수는 8개의 '기본형 변수' 를 사용하여 직접 만들어 사용하는 변수를 말한다.

변수의 선언

변수를 사용하기전엔 반드시 변수를 선언하고 초기화를 해야한다.

  • 변수의 선언만 하기
  • 변수의 선언과 동시에 초기화 하기

변수의 선언만 하기

먼저 변수의 선언만 하기는 "변수를 선언하여 메모리 공간을 할당받고, 나중에 변수를 초기화 하는 방법이다"
이렇게 선언만 된 변수는 초기화하지 않았으므로, 해당 메모리 공간에는 알 수 없는 쓰레기값만 들어가 있다.
그러니 선언만 된 변수는 꼭 초기화한 후에 사용해야한다.

int num;  // 변수의 선언
System.out.println(num)  // 오류 발생
num = 20; // 변수의 초기화
System.out.println(num). // 20

⚠️ 자바에선 변수를 선언만하고 초기화하지않은 변수는 사용할 수 없다
그래도 사용하려고하면 자바 컴파일러에서 오류를 발생시킬 것이다.

변수의 선언과 동시에 초기화 하기

int num1,num2;   // 같은 타입의 변수를 동시에 선언
double num3 = 3.14;  //  선언과 동시에 초기화
double num4 = 12.25, num5 = 5.55   // 같은 타입의 변수를 동시에 선언과 초기화

⚑ 선언하려는 변수의 타입이 서로 다르면 동시에 선언할 수 없다
(int num1 = 4, num5 = 5.55 // -> error)

또한 이런 경우도 할수 없다

double num1,num2;   // 같은 타입의 변수를 동시 선언
...
num1 = 1.23, num2 = 4.55; // 하지만 이미 위에서 선언된 여러 변수를 동시에 초기화 할수없음.

상수🔥

상수란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 말한다.
하지만 상수가 변수와 다른 점은 프로그램이 실행되는 도안 메모리에 저장된 데이터를 변경할 수 없다는 것

상수 역시 변수처럼 이름을 가지고 있는 메모리 공간으로, 선언과 동시에 반드시 초기화를 해주어야한다.
c++에선 const 키워드를 통해 상수를 선언하지만, 자바에선 final 키워드를 이용해 선언한다.

final int AGE = 29;

⚑ 자바에서 상수의 이름은 일반적으로 모두 대문자 사용하여 선언한다
그리고 여러 단어로 이루어진 이름의 경우에는 언더스코어를 사용해 구분한다 (START_JAVA)

상수를 왜 쓸까?

  • 오타로 인한 에러를 방지
  • 변경하면 안 되는 값을 보존
  • 데이터를 재사용

리터럴🔥

리터럴이란? 그 자체로 값을 의미하는것을 말한다
즉, 변수와 상수와 달리 데이터가 저장된 메모리 공간을 가리키는 이름을 가지고 있지 않다.

int var = 30; // 30 <이 리터럴이다
final int AGE = 29; // 29 < 가 리터럴이다.

타입에 따른 리터럴

  • 정수형 리터럴(Integer literals)은 123, -456 과 같이 아라비아 숫자와 부호로 직접 표현
  • 실수형 리터럴(floating-point literals)은 3.14, -55.56 과 같이 소수 부분을 가지는 아라비아 숫자로 표현
  • 논리형 리터럴(boolean literals)은 truefalse 로 표현
  • 문자형 리터럴(character literals)은 'a', 'Z' 와 같이 작은따옴표('') 로 감싸진 문자로 표현
  • 문자열 리터럴(string literals)은 "자바", "Minthug" 과 같이 큰따옴표("")로 감싸진 문자열로 표현
  • null 리터럴(null literals)은 단 하나의 값인 null 로 표현

리터럴 타입 접미사 (literal type suffix)

자바에서 3.14와 같ㄹ은 실수형 리터럴을 그대로 사용하면, 해당 리터럴은 실수형 타입 중에서도 double형으로 인식할 것이다.
하지만 실수형 리터럴 맨 뒤에 F나 f를 추가하면, 자바는 해당 실수형 리터럴을 float형으로 인식할 것이다.

profile
Minthug'life

0개의 댓글