변수(variable)란?
프로그래밍언어에서의 변수(variable)란 값을 저장할 수 있는 메모리 상의 공간을 의미한다. 수학에서의 변수의 의미인 '변하는 수'와는 의미가 다르지만 변수에 저장된 값은 변경될 수 있기 때문에 의미가 상통한 면이 있다고 볼 수 있다.
메모리란 RAM을 말하며 물리적으로 나누어져 있지만 논리적으로 하나의 연속된 저장 공간인것처럼 다룬다. 저장공간을 나누고 0,1,2..... 같이 연속적으로 메모리 주소를 부여하고 메모리에 값을 저장하거나 읽을 때 사용한다.
- 메모리에서는 1byte 단위로 일련번호가 붙어 있는데 이 번호를 메모리 주소(memory address) 또는 주소라고 한다.
하지만 이 는 사람이 사용하기에 불편하고 힘든 면이 있다. 따라서 메모리 저장공간을 나눈 영역에 이름을 부여해 주소대신 이름을 사용 함으로 불편함을 해소 한다.
- 하나의 변수에는 하나의 값만 저장할 수 있으며 새로운 값을 저장하면 기존의 값은 사라진다.
변수의 선언
그렇다면 자바에서 변수를 선언하기 위해서는 어떻게 해야할까?
- 변수에 값을 저장하기 위해서는 먼저 선언이 필요하다. 이는 메모리 상 값(Data)을 저장할 공간에 마련한다는 것이다.
int A;
- 변수를 선언하기 위해서는 위와 같은 방법을 사용해야 한다. 만약 타입이 같은 여러개의 변수를 선언하고자 한다면 아래와 같은 방법을 통해 선언할 수 있다.
int A, B;
변수의 초기화와 사용
- 변수의 초기화는 변수에 처음으로 값을 저장하는 것으로, 모든 변수는 사용하기 전 초기화 하는 것이 좋다.
int A = 0;
int A = 0, B = 15;
- 하나의 변수에는 하나의 값만 저장할 수 있으며 새로운 값을 저장하면 기존의 값은 사라진다.
- 변수는 위와 같은 방법을 통해 초기화 할 수 있다.
자바에서는 왜 선언과 동시 초기화 하는 것이 좋을까?
메모리는 여러 프로그램이 공유하는 자원이다. 따라서 기존에 알수 없는 값(쓰레기 값)이 있을 수 있기 때문에 모든 변수는 사용하기 전에 초기화 하는 것이 좋다.
- 자바의 변수의 종류에는 클래스 변수, 인스턴스 변수, 지역 변수가 있는데 이중 지역변수는 자동으로 초기화되지 않기 때문에 초기화가 반드시 필요하다.
변수의 값 읽어오기
- 자바에서는 변수의 값을 읽어와 사용하기 위해서 일반적으로 변수의 이름을 사용한다.
int A = 2, B = 3, C = 0; // 이처럼 변수가 선언되고 초기화된 변수를 사용한다.
int C = A + B; // A는 2로, B는 3으로 초기화 되었기 때문에 C에 2 와 3을 더한 값 5가 C에 저장된다.
상수(constant)란?
상수(constant)란 한번 만 값을 저장할 수 있는 변수를 의미한다. 변수와 상수 모두 하나의 값만을 저장할 수 있지만 변수는 저장된 값을 변경이 가능하지만 상수는 처음 저장한 값을 변경할 수 없다.
그렇다면 자바에서 상수를 사용하기 위해서는 어떻게 해야할까?
final int A = 10;
- 상수는 위와 같은 방법으로 변수와 같은 방법을 선언하고 초기화 한뒤 변수와 같은 방법을 통해 사용할 수 있다.
final int A;
A = 10;
- 위와 같이 선언과 초기화를 따로할 수 있지만 변수와 마찬가지의 이유로 인해 추천되지 않는다.
final int A = 10;
A = 20; // 에러 발생!
- 만약 이미 값이 저장된 상수에 다시 값을 저장하려 한다면 오류가 발생한다.
변수 명명 규칙
식별자는 서로 구분될 수 있어야한다. 따라서 서로 같은 영역 내에서 구분하기 위해 규칙을 따라야 한다.
- 식별자 : 프로그래밍에 사용되는 모든 이름, 변수도 이에 포함된다.
필수 규칙
1. 대/소문자가 구분되며 길이에 제한이 없다.
2. 예약어를 사용해서는 안 된다.
3. 숫자로 시작해서는 안 된다.
4. 특수문자는 '_'(언더스코어), '$'(달러)만을 허용한다.
권장 규칙
1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메서드의 이름의 첫글자는 항상 소문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- lastIndexOf, StringBuffer
- lastIndexOF : 클래스 이름이 아니기 떄문에 첫 글자는 소문자이다.
- StringBuffer : 클래스 이름이기 떄문에 첫 글자는 대문자이다.
3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우'_'(언더스코어바)로 구분한다.
- PI, MAX_NUMBER
'Java' 카테고리의 다른 글
[JAVA] 형변환(casting) (0) | 2023.08.05 |
---|---|
[JAVA] 자바의 리터럴(literal)? (0) | 2023.08.05 |
[JAVA] 변수(variable)의 기본형과 참조형 (0) | 2023.08.05 |
[JAVA] JVM(Java Virtual Machine) (0) | 2023.08.05 |
[JAVA] 자바 언어의 특징? (0) | 2023.08.05 |