반응형

Java 변수와 상

 

 

앞에서 프로그램이 동작 될 때 필요한 데이터를 메모리에 저장한다고 하였다.
이 때 메모리에 값을 저장하기 위해 적당한 공간을 할당하여 저장하는데
이 때 저장되는 공간을 저장된 값의 유지 여부에 따라 변수 또는 상수 라고 한다.

상수와 변수 모두 메모리의 공간

상수는 메모리 공간 안에 값이 변할 수 없는 것을 말한다.
    - 코드에 직접 삽입하는 형태의 값
    - final 이 붙어있는 값
변수는 메모리 공간 안에 값이 변할 수 있는 것을 말한다.

 

변수와 상수 중에 자주 사용되는 개념은 변수이므로

상수는 변하지 않는 값이다 라고 기억만 하고 이야기가 어려워지는 것 같으니

변수만 이해하도록 한다.
사실 변수만 이해하고 사용하면 나중에 상수는 자연스레 이해될 것이다.(사용할 일이…?)

 

변수란?
  위에서 언급한 것과 같이 하나의 값을 담을 수 있는 메모리의 공간이다.
  프로그램이 동작할 때 필요한 값을 저장하기 위해 다음과 같이 변수를 만들어 값을 저장한다.

 

예) 나이를 저장하기 위해 변수를 생성하고 값을 대입
 

위 예제를 보면 int age = 20이 보인다. 코드를 해석해보면
- int는 정수를 나타내는 자료형이고
- age는 값이 담길 변수의 이름이다.
- = 은 같다가 아니라 오른쪽 값을 왼쪽에 대입하는 연산이다.


이를 그림으로 표현하면 다음과 같다.

 

 

System.out.println(age)는 age변수에 들어있는 값을 출력하도록 한 것이다.

 

age를 변수라고 하는 이유는 age에 들어있는 20말고 다른 값을 대입할 수 있기 때문이다.
다음과 같이 코드를 추가하면

 

20이 들어있던 age라는 변수에 30이라는 값을 대입하는 것이다.

즉, age에는 20이 들어있었는데
30이라는 값을 대입하면
age의 값이 30으로 변했다라는 것이다.
이래서 변수라고 하는 것이다.

 

한 마디 추가하면 위에서 대입하기 위한 값을 코드에 적었다(20과 30)
age변수에 복사된다고 그림으로 표현한 저 값들!
저 값은 실행 시 미리 존재하는 값으로 상수에 해당한다.(리터럴 상수라고...)

 

일단 변수는 그런 것이고 앞으로 프로그램을 작성하며 수 없이 사용하게 될 것이다.
변수를 만드는 방법은 다음과 같다.
 
     자료형 변수명 = 초기값;  //초기화
     int age = 10;
 
 또는
 
     자료형 변수명; 
     int age;
 
위 두 가지 방법은 변수라는 공간을 만들면서 값을 초기화 하느냐 아니냐의 차이이며
그림으로 표현하면 다음과 같다.


일단 자료형이란 저장할 데이터의 종류이며 다음 글에 설명할 것이다.

위 그림을 해석하면

- 첫 번째 방법은 변수를 만들면서 값을 대입하는 것으로 초기화(Initialize)라고 한다.

- 두 번째 방법은 변수를 만들기만 한 것으로 변수에는 초기화 되지 않은 의미 없는 값(쓰레기 값)이 들어있다.

 

자바에서 초기화되지 않은 변수를 연산에 사용하는 경우 예외(Exception)가 발생되므로
반드시 초기화를 하고 사용하도록 권장한다.(초기화할 값이 없으면 0으로)
여기까지 간단하게 변수의 개념을 이해하도록 한다.

이해가 어렵다면 대충 감만 잡고 다음으로 넘어가도 괜찮다.

이것만 기억하자.

변수? -> 메모리에 값을 저장하는 공간이고 변수 내부의 값을 변경할 수 있다!


중요내용 추가

변수를 만들 알아둬야 사항이다.

변수뿐만 아니라 프로그램을 작성할 예약어를 제외하고 사용자가 이름을 지을

다음을 참조하도록 한다.

 

폴더, 클래스, 메서드, 그리고 필드들의 이름 등을 정의할 때 사용되는 이름을

사용자가 정의한 이름(Identitfier(식별자))라고 하는데 다음과 같은 규칙을 따르도록 권장

 

절대 규칙

    • 글자는 $, _,영문 대소문자여야 한다.(한글도 가능하지만 권장하지는 않는다)
    • 글자수에는 제한이 없다.
    • 공백 문자는 포함할 수 없다.
    • 특수문자(@, #, %, ^, &, !, ?)는 사용할 수 없다.
    • 숫자는 첫 글자가 아닐 경우 사용이 가능하다
    • 예약어는 사용할 수 없다.

 

사용 불가

1$test    te st    @test    int    class    

사용 가능

_test    te1st    test    int1    class2

 

권장 사항

    • Class : 첫 글자는 $, _,대문자를 사용하자
    • Method(함수) : 첫 글자는 $, _, 소문자를 사용하자
    • Field(변수) : 일반적으로 전부 대문자인 경우는 static final 필드이고
    • 외는 첫 글자는 소문자, 나머지는 대문자이다
    • 합성어의 첫 글자는 대문자로 한다(HelloJava)

 

반응형

+ Recent posts