값을 저장하는 저장공간. 값을 재사용하기 위해서 사용한다.
-> 자료형 변수명;
ex) int number;
-> int형의 값을 넣은 number라는 저장공간(변수)을 만든다.
-> 변수명 = 값;
(대입연산자(=)를 사용한다.)
ex) number = 10;
-> number라는 저장공간(변수)에 10이라는 값을 넣는다.
-> 자료형 변수명 = 값;
ex) int number = 10;
-> int형의 number라는 저장공간(변수)에 10이라는 값을 넣는다.
변수는 선언 혹은 대입연산자 앞(왼쪽) 에서는 저장공간이라고 해석한다.
그 외 (오른쪽) 에서는 저장된 값이라고 해석한다.
1. 숫자로 시작하면 안된다.
ex) int 1num; -> x
int num1; -> o
int a2b; -> o
-------------------------------------------------------------
2. 띄어쓰기는 불가능하다.
ex) int my age; -> x
int myage; -> o
int my_age -> o (팟홀 표기법, 스네이크 표기법)
int myAge; -> o (카멜 표기법)
-------------------------------------------------------------
3. 특수문자는 사용이 불가능하다.
ex) int !@#! -> x (단, 언더바(_) 만 사용 가능하다.)
-------------------------------------------------------------
4. 이미 존재하는 키워드는 사용이 불가능하다. (예약어를 사용 불가능)
ex) int double -> x
👀 예약어
1. 웬만하면 의미있는 단어를 쓰자.
ex) int afsda; -> x
int age; -> o
-------------------------------------------------------------
2. 웬만하면 소문자로 시작하자.
-> class가 대문자로 시작하기 때문.
-------------------------------------------------------------
3. 한글보다는 영어로 짓자.
-> 호환성 문제 때문.
-------------------------------------------------------------
4. 상수는 모두 대문자로 표시한다.(상수 = 변하지 않는 수)
ex) final double PI;
final int COLOR;
1. 반복해서 다른 값이 할당될 수 있지만, 선언은 중복 불가.
ex) int num1 = 100; (변수 선언과 값 할당)
num1 = 200; -> o
int num1 = 300; -> x (이미 선언된 변수이므로 에러발생)
-------------------------------------------------------------
2. 선언되지 않은 변수는 사용할 수 없다.
ex) int num1 = 100; (변수 선언과 값 할당)
num1 = 200; -> o
num2 = 300; -> x (선언되지 않은 변수이므로 에러발생)
-------------------------------------------------------------
3. 값이 대입되지 않은 변수는 다른 변수에 대입하거나 출력할 수 없다.
ex) int num1; (변수 선언)
int num2 = num1; -> x (할당되지 않은 변수를 대입하였으므로 에러발생)
System.out.println(num1); -> x
(할당되지 않은 변수를 출력하였으므로 에러발생)
1. 자신보다 하위 블록으로는 침투할 수 있다.
int num = 100;
if(num ==100){
System.out.println(num);
}
-> 변수 num이 현재 블록 밖에서 생성되었으므로 사용가능.
---------------------------------------------------------------------
2. 자신이 선언된 블록 밖으로는 빠져나갈 수 없다.
int num = 100;
if(num == 100){
int result = num + 100;
}
System.out.println(result);
-> 변수 result가 if문 안에서 생성되었으므로, if문 밖에서는 사용 불가.
---------------------------------------------------------------------
3. 블록 안에서 선언된 변수는 블록 밖에서 존재하는 동일한 이름의 변수와는 이름만 동일할 뿐,
다른 값으로 인식된다.
int target = 100;
if(target == 100){
int num = target + 100;
}else{
int num = target - 100;
}
-> 오류 발생 x.
1. 멤버변수(전역변수)
: 클래스 안에서 선언된 변수로서, 클래스 블록범위 안에서 유효하다.
-------------------------------------------------------------------------------
2. 지역변수
: 메소드 안에서 선언된 변수로서, 메소드의 블록을 빠져나가지 못한다.
그러므로 다른 메소드는 해당 변수를 인식하지 못한다.
이 규칙은 조건,반복문과 같은 블록{}을 형성하는 모든 경우에 해당한다.