변수와 상수

엄지찬·2023년 4월 12일

변수(variable)

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


변수의 이름 생성 규칙

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

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


변수의 종류

  1. 기본형(primitive type)변수
    기본형 변수는 실제 연산에서 사용되는 변수이다.
    • 정수형 : byte, short, int, long
    • 실수형 : float, double
    • 문자형 : char
    • 논리형 : boolean
  2. 참조형(reference type)변수
    참조형 변수는 8개의 기본형 변수를 사용하여 사용자가 직접 만들어 사용하는 변수를 의미한다.

변수의 선언

자바에서는 변수를 사용하기 전에 반드시 먼저 변수를 선언하고 초기화해야 하낟.

  1. 변수의 선언만 하는 방법
  2. 변수의 선언과 동시에 초기화하는 방법

변수의 선언만 하는 방법

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

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

위의 예제처럼 정수를 저장하기 위한 메모리 공간을 할당받으면, 반드시 해당 타입의 데이터만을 저장해야 한다.


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

선언하고자 하는 변수들의 타입이 같다면 이를 동시에 선언할 수도 있다.

int num1, num2; // 같은 타입의 변수를 동시에 선언
double num3 = 3.14; // 선언과 동시에 초기화(할당)
double num4 = 1.23, num5 = 4.56 // 같은 타입의 변수를 동시에 선언하면서 초기화

하지만 다음처럼 여러 변수를 동시에 초기화할 수는 없다.

int num4, num5; // 같은 타입의 변수 동시 선언
num4 = 2, num5 = 10; // 이미 선언된 여러 변수를 동시에 초기화 할 수 없다.

상수(constant)

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


상수는 선언과 동시에 반드시 초기화해야 하낟.
자바에서는 final키워드를 사용한다.

final int num = 10;

리터럴(literal)

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

int var = 10; // 10은 리터럴이다.
final int num = 50; // 50은 리터럴이다.

타입에 따른 리터럴

  1. 정수형 리터럴 : 100, -123과 같이 아라비아 숫자와 부호로 직접 표현된다.
  2. 실수형 리터럴 : 2.13, -23.5과 같이 소수 부분을 가지는 아라비아 숫자로 표현된다.
  3. 논리형 리터럴 : true나 false로 표현된다.
  4. 문자형 리터럴 : 'a', 'P'와 같이 작은 따옴표'로 감싸진 문자로 표현된다.
  5. 문자열 리터럴 : "홍길동", "자바"와 같이 큰 따옴표"로 감싸진 문자열로 표현된다.
  6. null 리터럴 : 단 하나의 값인 null로 표현된다.

이와 같이 기본형 변수와 상수, 리터럴에 대하여 알아보았다.
예전에 배울때는 그렇구나 하고 그냥 쓰기에 바빴는데 다시 개념을 찾아보니 좀 더 정확하게 사용할 수 있을 것 같다.
역시 기본 개념이 중요한 것 같다고 다시 한 번 느끼게 된다.

profile
비전공 신입 개발자의 마라톤 완주!

0개의 댓글