변수(Variable)
: 변수란 프로그램에 의해 이름을 할당 받은 데이터를 저장할 수 있는 메모리 공간이다. 이름이 변수인 이유는 수시로 값이 변동될 수 있기 때문이고, 변수엔 단 하나의 값만 저장할 수 있다.
ex) 사람의 나이, 학생의 학년, 사원의 수
변수 선언
변수를 사용하기 위해선 먼저 변수를 선언해야 한다. 변수 선언은 어떤 타입의 데이터를 저장할 것인지 그리고 변수 이름이 무엇인지를 결정한다.
** 타입(type)은 형, 자료형으로도 불린다.
같은 타입의 변수는 콤마(,)를 이용해서 한꺼번에 선언할 수도 있다.
ex)
int x; int y; int z; |
int x, y, z; |
변수 이름은 자바 언어에서 정한 명명 규칙을 따라야 한다.
작성 규칙 | 예 |
첫 번째 글자는 문자이거나 '$', '_' 이어야 하고 숫자로 시작할 수 없다. (필수) | 가능: price, $price, _companyName, 불가능: 1v, @speed, $#value |
영어 대소문자를 구분한다.(필수) | firstname과 firstName은 다른 변수 |
첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다. (관례) | maxSpeed, firstName, carBodyColor |
문자 수(길이)의 제한은 없다. | |
자바 예약어는 사용할 수 없다. (필수) | https://vaert.tistory.com/106 참조 |
** 예약어란 이미 해당 프로그래밍 언어에서 의미를 갖고 사용되고 있는 단어이다.
** 개발자는 변수가 어떤 값을 저장하고 있는지 쉽게 알 수 있도록 이름을 지어주는 것이 좋다. 또한 변수 이름에는 한글을 포함하지 않는 것이 좋다.
값 저장
변수에 값을 저장할 때에는 대입 연산자(=)를 사용한다. 수학에서 등호(=)는 '같다'는 의미지만, 자바 언어에서는 오른쪽의 값을 왼쪽의 변수에 저장한다는 의미를 갖는다.
int x; // 변수 선언
x = 10; // 값 저장 ( 숫자 10이 변수 x에 저장됨)
만약 변수에 값이 저장되지 않으면 변수가 생성되지 않고, 변수에 최초로 값이 저장될 때 변수가 생성된다. 이것을 변수 초기화라고 한다. 그리고 이때 사용된 값을 초기값이라고 한다. 위 코드에서 10은 초기값에 해당된다.
변수가 초기화 되면 메모리 번지 정보를 가지게 되고, 해당 메모리 번지에 값이 저장된다.
변수 사용
변수는 출력문이나 연산식 내부에서 변수에 저장된 값을 출력하나 연상할 때 사용한다.
ex 1) 변수의 값 출력
int hour = 7; // 변수 hour에 7 저장
int minute = 30; // 변수 minute에 30 저장
System.out.println(hour + "시" + minute + "분" ); //변수 hour와 minute 값을 출력: 7시 30분
ex 2) 산술 연산식
int hour = 5;
int minute = 3;
int totalMinute = (hour * 60) + minute;
System.out.println(totalMunute + "분"); // 303분
ex 3) 변수에 또 다른 변수 대입
int x = 10; // 변수 x에 10을 저장
int y = x; // x에 저장된 값을 변수 y에 복사(저장)
ex 4) 값 교환
int x = 3;
int y = 5;
System.out.println("x: "+ x +", y: "+y); // x: 3 , y: 5
int temp = x; // 변수 x의 값을 저장하기 위해 사용된 변수 temp
x = y;
y = temp;
System.out.println("x: "+ x + ", y: "+y); // x: 5, y: 3
> 변수 x 값 3을 변수 temp에 저장 -> 변수 y 값 5를 변수 x에 저장 -> 변수 temp 값 3을 변수 y에 저장
변수 사용 범위
모든 변수는 중괄호 {} 블록 내에서 선언되고 사용된다. 메소드 블록내에서 선언된 변수를 로컬변수(local variable)라고 부르는데, 로컬 변수는 메소드 블록 내에서만 사용되고 메소드 실행이 끝나면 메소리에서 자동으로 없어진다. 변수는 자신이 선언된 위치로 부터 자신이 속한 블록 내부에서만 사용할 수 있다.
ex)
public static void main(String[] args){
int var1; // 메소드 블록에서 선언
if(...){
int var2;
// var1, var2 사용 가능
// var3 사용 못함
}
if(...){
int var3;
// var1, var3 사용 가능
// var2 사용 못함
}
// var1 사용 가능
// var2, var3 사용 못함
}
변수를 선언할때 다음과 같은 주의사항이 있다.
- 변수가 어떤 범위에서 사용될 것인지를 생각하고, 선언 위치를 결정해야 한다.
- 메소드 블록 전체에서 사용하고 싶다면 메소드 블록 첫머리에 선언한다.
- 특정 블록 내부에서만 사용된다면 해당 블록 내에 선언한다.
'BACKEND > Java' 카테고리의 다른 글
[Java] 타입 변환 (0) | 2020.08.04 |
---|---|
[Java] 데이터 타입(Data Type) / 이스케이프(Escape) 문자 (0) | 2020.08.04 |
[Java] 프로그램 소스 분석 / 주석 / 세미콜론 (0) | 2020.08.02 |
[Java] 터미널에서 컴파일하고 실행하기 (0) | 2020.08.02 |
[Java] 프로젝트 생성 (0) | 2020.08.02 |