본문 바로가기
Java/Basic

변수와 상수

by 최로이 2021. 2. 13.

1. 변수

 단 하나의 값을 저장할 수 있는 공간

 

1.2 형태

int, String, float, boolean(등의 변수타입) a(변수명) = ; int a = 14;

int a = 14; //변수타입 변수명 = 변수타입에 맞게 저장할 변수값;

이 때 변수타입이란 변수에 저장될 값이 어떤 타입인지를 지정하는 것으로, 저장하고자 하는 값의 종류에 맞게 변수의 타입을 선택해서 작성하면 된다. 변수명은 말 그대로 변수에 명명하여 붙인 이름으로 메모리 공간에 이름을 붙여주는 것과 같다. 이때 대입연산자 '='는 늘 변수에 값을 저장할 때 사용하며 왼쪽에 있는 변수에 값을 저장하라는 의미로 사용된다.

 

1.3 변수 초기화

변수는 선언한 이후로 사용할 수 있으나, 그 전에 반드시 변수를 초기화하여 사용해야 한다. 왜냐하면 메모리는 여러 프로그램이 공유하는 자원이기 때문에 전에 다른 프로그램에 의해 알 수 없는 값(쓰레기 값, Garbage Value)이 저장 되어 남아 있을 수 있기 때문이다. 즉, 초기화란 변수를 사용하기 전에 처음으로 값을 저장하는 것을 의미한다.

class VarEx1 {
	public static void main(String[] args) {
		int year = 0;
		int age  = 14;
		 
		System.out.println(year);	//0
		System.out.println(age);	//14

		year = age + 2000;  // 변수 age의 값에 2000을 더해서 변수 year에 저장
		age  = age + 1;     // 변수 age에 저장된 값을 1증가시킨다.

		System.out.println(year);	//2014
		System.out.println(age);	//15
	}
}

 

1.4 변수 선언 규칙

1) 대소문자가 구분되며 길이에 제한이 없다 → Apple과 apple은 다른 것으로 간주된다.

2) 예약어를 사용해서는 안 된다  → 이 때 예약어란 프로그래밍언어의 구문에 사용되는 단어이며 true는 불가능하지만 True는 가능하다.

3) 숫자로 시작해서는 안 된다  → top10은 허용되지만 7lucky는 허용되지 않는다.4) 특수문자는 언더바(_)와 달러($)만 사용할 수 있다  → $harp는 허용되지만 S#arp는 허용되지 않는다.

 

그 외 알아두면 좋은 권장 규칙.

1. 클래스명과 첫 글자는 항상 대문자로 한다.
  -변수와 메소드명의 첫 글자는 항상 소문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
  -lastIndexOf, StringBuffer
3. 상수명은 모두 대문자로 표기하며, 여러 단어로 이루어진 경우에는 (_)로 구분한다.
  -PI, MAX_VALUE / MIN_VALUE 등..

 

2. 변수타입

변수의 타입에는 기본적으로 기본형과 참조형으로 크게 두 가지로 분류된다. 기본형 변수는 값을 변수에 직접 저장하는 반면에 참조형 변수는 값을 직접 저장하는 것이 아닌 값이 저장된 주소를 값으로 갖는다는 특징을 가지고 있다. 자바는 

참조형 간에 연산을 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형 변수다.

 

기본형(primitive type)

  -논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 계산을 위한 실제 값을 저장하며 총 8개의 타입이 존재한다.

 

참조형(reference type)

  -객체의 주소를 저장하며, 8개의 기본형을 제외한 나머지 타입이다.

  -선언방법: 클래스명 변수명; //변수타입이 클래스명과 동일한 것들은 모두 클래스 타입의 참조변수다.

  - Date today = new Date(); // Date클래스 타입의 Date객체를 생성하여, 주소 값을 today라는 변수에 저장.

 

기본형과 참조형의 차이점

기본형은 저장할 값의 종류에 따라 구분되므로 기본형의 종류를 얘기할 때는 자료형(data type)이라는 용어를 사용한다. 그러나 참조형은 항상 객체의 주소(4byte)를 저장하므로 값(data)이 아닌, 객체의 종류에 의해 구분되므로 참조형 변수의 종류를 구분할 때는 '타입'이라는 용어를 사용한다. 이 때 '타입'이 '자료형'을 포함하는 보다 넓은 의미의 용어이므로 굳이 구분하여 사용하지 않아도 된다.

 

2.1 기본형(primitive type)

분류 타입
논리형 boolean(1byte)
true와 false중 하나를 값으로 가지며, 조건식과 논리적 계산에 사용된다. 기본값은 false다.
문자형 char(2byte)
문자를 저장하는데 사용되며, 변수 당 하나의 문자만 저장할 수 있다.
정수형 byte, short(2byte), int(4byte), long(8byte)
정수값을 저장하는데 사용된다. 정수형의 기본형은 int이며, 주로 int와 long이 많이 사용된다.
실수형 float(4byte), double(8byte)
 실수를 저장하는데 사용되며, 기본형으로 double이 사용된다.

 

2.2 상수와 리터럴(constant and literal)

상수는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이지만 변수와 달리 한 번 저장하면 그 값을 변경할 수 없다는 특징이 있다.

 

상수의 특징

1) 한 번 저장하면 저장한 값을 변경할 수 없다.

2) 상수 선언은 타입 앞에 final을 붙여야 하며, 상수명은 대문자로 표기하고 구분자는 '_'로 표기한다(아래 참고)

3)상수는 반드시 선언과 동시에 초기화 해야 하며, 이후부터는 상수의 값을 변경할 수 없다.

//1. 상수 MAX_SCORE를 선언 및 초기화
final int MAX_SCORE = 100;

//2. 에러
final MAX_SCORE; //선언과 동시에 초기화 하지 않음
MAX_SCORE = 100; // 상수 값은 변경될 수 없으며, final과 타입을 지정해 줘야함.

리터럴: 그 자체로 값을 의미하는 것

지금까지 정리했던 변수, 상수 리터럴의 정의를 정리하면 다음과 같다.

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

 

'Java > Basic' 카테고리의 다른 글

연산자  (0) 2021.02.18
형변환(Casting)  (0) 2021.02.17
기본형(primitive type)  (0) 2021.02.16
화면 출력과 화면 입력  (0) 2021.02.14
객체지향의 개념과 클래스, 객체  (0) 2021.01.18

댓글