chap02 변수
변수란?
값을 저장할 수 있는 메모리상의 공간을 의미한다. 이 공간에 저장된 값은 변경될 수 있기 때문에 "변수"라고 부른다. 하나의 변수에는 하나의 값만 저장할 수 있어, 새로운 값을 저장하면 기존의 값은 사라진다.
변수선언
변수를 선언할 때는 변수타입 + 변수이름으로 변수를 선언한다
ex) int(변수타입) + age(변수이름) -> int age;
- 변수타입: 변수에 저장될 값이 어떤 타입인지를 지정하는 것이다. 저장하고자 하는 데이터의 타입을 지정해주면 된다.
- 변수이름 : 변수의 이름. 저장되는 메모리고안에 이름을 붙여주는 것이다. 간단한 이야기지만 같은이름의 변수는 여러 개 존재해서는 안된다. 서로 구별될 수 있어야 하기 때문이다.
변수 초기화
변수를 선언한 이후 변수를 사용할 수 있으나 그 전에 변수에 값을 초기화 해야한다. 변수에 값을 저장할 때는 대입 연산자 "="를 사용한다. 수학에서는 "equal"의 의미이지만 프로그래밍에서는 "오른쪽 값을 왼쪽 변수에 저장한다"라고 이해하면 될 것같다. 그래서 반드시 왼쪽에는 "변수"가 와야한다.
ex) int age; -> 변수 선언
age = 25; -> 변수 초기화
위의 예시에서는 변수의 선언과 초기화를 나누어서 했지만 동시에도 가능하다
ex) int age = 25; -> 변수 선언과 동시에 초기화
public static void main(String[] args) {
int year = 0; /*year 변수 선언 및 0으로 초기화*/
int age = 14;/*age 변수 선언 및 14로 초기화*/
//1
System.out.println(year);
System.out.println(age);
year = age + 2000; /*year = 14 + 2000 year에 저장되어있던 기존 0값이 2014로 저장*/
age = age + 1; /* age = 14 + 1 :: 기존 age(14)에 14 + 1을 저장*/
//2
System.out.println(year);
System.out.println(age);
}
위 실행 결과로 아래의 결과값이 나온다.
0 //1 year
14 //1 age
2014 //2 year
15 //2 age
두 변수의 값을 교환하려면 어떻게 해야할까?
int x = 10, y = 20; 두 변수가 있을 때 두 변수의 값을 교환하여 int x = 20, y = 10; 만들 수 있는 방법이 무엇일까?
x 라는 변수에 y를 저장한다면 x가 가지고 있던 10의 값은 사라져 버릴 것이다.
public static void main(String[] args) {
int x = 10;
int y = 20;
x = y; /*x에 y값 저장 x = 20*/
System.out.println(x); /*20*/
System.out.println(y); /*20*/
y = x; /*y에 x값 저장 y = 20*/
System.out.println(x); /*20*/
System.out.println(y); /*20*/
}
그렇담 어떻게 하면 좋을까?
중간에 temp라는 변수를 사용하여 임시로 x의 값을 저장 후에 temp에 저장된 x의 값을 y로 옮기는 것이다.
public static void main(String[] args) {
int x = 20;
int y = 30;
int temp;
System.out.println("x : " + x + ", y : " + y);/*x = 20, y = 30*/
temp = x; /*x의 값을 변수 temp에 넣는다 temp = 20*/
x = y; /*y의 값을 x에 넣는다 x = 30, y = 30*/
y = temp; /*temp(20)의 값을 y에 넣는다*/
System.out.println("x : " + x + ", y : " + y); /*x = 30, y = 20*/
}
변수의 명명규칙
1. 대소문자가 구분되며 길이에 제한이 없다
ex) true 와 True는 서로 다르다
2. 예약어를 사용해서는 안된다.
ex) true는 예약어이므로 사용할 수 없다. if, else if 등등.. True는 아니다
3. 숫자로 시작하면 안된다.
ex) 123sx (x) sx123(O)
4. 특수문자는 '_'와 '$'만을 허용한다.
ex) $Td (O), #@s(X)
5. 클래스 이름의 첫 글자는 대문자로 한다
ex) Test, Apple
6. 변수와 메서드의 첫 글자는 소문자로 한다.
ex) maxSize, runWith()...
7. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
ex) lastIndex, StringBuilder. ..
8. 상수의 이름은 모두 대문자로 한다. 여러 단어일 경우 '_'로 구분한다.
ex) MAX_SIZE
참고서적 : Java의 정석3rd Edition, 남궁 성