중요한 프로그래밍 능력 중 하나는 값(data)을 잘 다루는 것이다.
프로그래밍 언어에서 "변수"란, 값을 저장할 수 있는 메모리 공간을 의미한다.
단 하나의 값만 변수에 저장될 수 있으며
, 변수에 다른 값을 저장하면, 변수는 다른 값 만을 저장하게 된다.
메모리란 물리적으로는 RAM 을 의미하며, 논리적인 저장 공간
을 의미한다. 저장공간의 기본단위는 1 byte
이며, 저장공간 하나 당 연속적인 숫자로 구분되어 있는데, 이 숫자를 메모리 주소
라고 한다.
메모리에
값(data)을 저장
하거나읽을 때
는메모리주소를 이용해야하는데
,연속적인 숫자
이므로 사람이 기억하기가 어려워서 일정 공간에이름
을 주고이름을 이용하여 메모리의 값을 읽거나 저장하는 것
이변수
이다.
값을 저장할 공간을 마련하기 위함
이다.일정한 메모리 공간에 이름을 지어 구분하는 행위
이다.자료형의 크기 만큼의 메모리공간
이 변수 타입에 따라 할당되며, 해당 값(data)
은 이름[변수]
을 통해서 메모리에 값을 저장하고 불러들일 수 있게된다.변수타입 변수이름;
// 변수타입 변수이름;
int age;
초기화
라고한다.=(대입연산자)
를 사용한다.우항의 값을 좌항에 저장하라
라는 의미를 가진다.int age; // 변수선언 , 변수타입 변수이름;
age = 29; // = (대입연산자)로 변수에 값을 할당한다.
int age = 29; // 변수의 선언과 동시에 대입연산자로 초기화할 수 있다.
, (콤마)
를 사용하면 같은 타입의 변수를 한 줄에 선언할 수 있다.
int age, num;
int age = 29, num = 30; // 콤마로 구분하여 같은 타입의 변수를 한 줄에 초기화할 수 있다.
클래스 변수
인스턴스 변수
로컬 변수
클래스, 인스턴스 변수는 초기화를 생략할 수 있으나, "로컬 변수는 반드시 초기화해야한다."
변수의 이름
으로 읽어오면 된다.연산자 우선 순위 상 대입연산자는 마지막 순위이므로 덧셈 후 year 변수에 값이 할당된다.
int age = 28 , year = 0;
year = age + 1993; // 변수의 이름을 적는 것으로 메모리의 공간의 변수를 불러들일 수 있다.
//year = 28 + 1993;
//year = 2021
public class VarEx1 {
public static void main(String[] args) {
System.out.println(6+3); // 9
System.out.println(6-3); // 뺄셈
System.out.println(6*3); // 곱셈
System.out.println(6/3); // 몫
System.out.println(6%3); // 나머지
// 값이 계속 변화한다면 원시 자료형을 기입하는 것으로는 한계가 있다.
int x = 4, y = 2;
// 변수 이름으로 메모리에 할당 된 값을 불러들이고 있다.
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
System.out.println(x%y);
}
}
변수의 값을 메모리에서 불러온다.
문자열을 메소드의 인자로 준다.
System.out.println("X: "+x+" / Y: "+y);
System.out.println("X: "+6+" / Y: "+5);
System.out.println("X: 6"+" / Y: "+5);
System.out.println("X: 6 / Y: "+5);
System.out.println("X: 6 / Y: 5");
public class SwitchData {
public static void main(String[] args) {
int x = 5, y = 6;
/*변수의 규칙 상 단 하나의 값만 저장할 수 있기 때문에, 다른 값을 저장하면 기존 값은 없어져버린다.
* 그러므로 임시 변수를 만들고 x 값을 옮겨놓고 y 를 x 에 대입하고, y 에 임시변수 값을 대입해야한다.
* */
int temp; // 0
temp = x;
x = y;
y = temp;
System.out.println("X: "+x+" / Y: "+y);
}
}
단 하나의 값만 저장할 수 있다.
이름
을 식별자
라고 한다.같은 영역
내에서 서로 구분될 수 있어야한다.
- 대소 문자를 구분한다.
- 예약어[키워드]는 사용할 수 없다.
- 숫자로 시작하면 안된다.
- 사용 가능한 특수문자는
$
와_
뿐이다.
상수는 대문자로 작성
하며 _
로 단어를 나눈다.Hello.class // 클래스 이름은 대문자로 시작한다.
public void functionName() {..} // 함수나 변수 이름은 소문자로 시작한다.
int humanAge; // 여러 단어로 이루어진 이름은 단어의 첫글자를 대문자로 한다.
static final int NUMBER_CONST = 0;
// 상수는 대문자로 작성하며, 다른 단어는 _ 로 구분한다.