컴퓨터 메모리(RAM)는 값을 저장할 수 있는 수많은 번지(주소)들로 구성되어있다.
변수를 선언하고 변수에 값을 저장하면, 메모리에 값이 저장된다.
메모리의 어디에 저장하고, 어떤 방식으로 저장할지는 프로그래밍 언어와 운영체제가 정한다.
-> 자바의 경우 JVM이 하는 일
특정 타입에는 해당 타입의 값만 저장할 수 있고, 하나의 변수에는 하나의 값만 저장할 수 있다.
변수에 어떤 타입(자료형)의 데이터를 저장할 것인지, 변수의 이름은 무엇인지 결정하는 것
변수에 저장되는 값의 종류와 범위를 결정짓는 요소
같은 타입의 변수는 ','를 사용해 한꺼번에 선언할 수도 있음
int x;
int y;
int x, y; //위에 따로 선언한것과 동일
자바언어에서 정한 명명규칙 따라야함
어떤 값을 저장하고있는지 알 수 있도록 의미있는 이름 지어주는것이 좋음
변수이름의 길이는 프로그램 실행과는 무관하기때문에 충분히 길어도 상관없음
한글을 포함하지 않는것이 좋음
이미 해당 프로그래밍 언어에서 의미를 갖고 사용되고 있는 단어
변수이름으로 사용할 수 없음 -> 사용할 경우 컴파일 에러 발생
분류 | 예약어 |
---|---|
기본 타입 | boolean, byte, char, short,int,long,float,double |
접근 제한자 | private,protected, public |
클래스와 관련된 것 | class, abstract, interface, extends, implements, enum |
객체와 관련된 것 | new, instanceof, this, super, null |
메소드와 관련된 것 | void, return |
제어문과 관련된 것 | if, else, switch, case, default, for, do, while, break, continue |
논리값 | true, false |
예외 처리와 관련된 것 | try,catch,finally,throw,throws |
기타 | package, import, synchronized, final, static |
변수에 값을 저장할때는 대입 연산자(=) 사용 : 오른쪽의 값을 왼쪽의 변수에 저장한다는 의미
자바에서는 변수에 값이 저장되지 않으면 변수가 생성되지 않는다.
선언과 생성은 다른 이야기!
변수 선언은 저장되는 값의 종류와 이름만 언급한 것.
변수에 최초로 값이 저장될 때 변수가 생성된다! = 변수 초기화
-> 변수 초기화에 사용된 값 = 초기값
변수가 초기화되면 메모리 번지 정보를 갖게되고, 해당 메모리 번지에 값이 저장됨
int score = 90;
초기화되지 않은 변수는 아직 메모리 번지 정보를 가지고있지 않으므로, 변수를 통해 메모리 값을 읽을 수 없다.
잘못된 코딩
int value; // 변수 선언되었지만, 초기화되지 않음
int result = value +10; // value변수는 아직 존재하지않음 -> 컴파일에러 발생
변수는 출력문이나 연산식 내부에서 변수에 저장된 값을 출력하거나 연산할 때 사용한다.
println() 메소드의 매개값에 변수를 사용하면, 변수에 저장된 값을 사용해서 출력한다.
메소드 = 어떤 일을 처리하는 실행문들을 모아놓은 블록
산술연산식에 변수를 사용하면 저장된 값으로 연산을 수행한다.
변수는 또 다른 변수에 대입하여 값을 복사할 수 있다.
int x = 10;
int y = x; // x에 저장된 값을 변수 y에 복사(저장)
자바의 모든 변수는 중괄호 {} 블록 내에서 선언되고 사용된다.
변수는 블록 내 어디에서든 선언할 수 있지만, 변수 사용에는 제한이 따른다.
변수는 자신이 선언된 위치로부터 자신이 속한 블록 내부에서만 사용할 수 있다.
메소드 블록 내에는 다른 중괄호{} 블록들이 작성될 수 있다.
ex) if(){}, for(){}, while(){} ...
-> 이런 중괄호 {} 블록 내에서 선언된 변수는 해당 중괄호{} 블록 내에서만 사용가능하고, 밖에서는 사용할 수 없다.
int v1 = 15;
if(v1>10) {
int v2;
v2 = v1 - 10;
}
int v3 = v1 + v2 + 5; // v2 변수를 사용할 수 없기때문에 컴파일 에러 발생
컴파일 에러명 = v2 cannot be resolved to a variable
= 변수 v2를 해석할 수 없다
출처
혼자 공부하는 자바