JAVA/JAVA의 정석

chap02 변수

crone 2021. 6. 9. 15:06

변수란?

값을 저장할 수 있는 메모리상의 공간을 의미한다. 이 공간에 저장된 값은 변경될 수 있기 때문에 "변수"라고 부른다. 하나의 변수에는 하나의 값만 저장할 수 있어, 새로운 값을 저장하면 기존의 값은 사라진다.

 

변수선언

변수를 선언할 때는 변수타입 + 변수이름으로 변수를 선언한다 

 

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, 남궁 성