2) 변수와 상수

· 변수

 

다음 예와 같은 a, b를 변수(variable)라고 한다.


int a;
String b;

 

· 변수명

 

변수의 이름은 프로그래머가 마음대로 지을 수 있다. 위의 예처럼 a, b 라는 이름으로 지을 수도 아래와 같이 one, two 라는 이름으로도 지을 수 있다.

 


int one;
String two;

 

단, 변수의 이름을 지을 때는 다음과 같이 지켜야 할 몇가지 규칙이 있다.

 

  • 변수명은 숫자로 시작할 수 없다.
  • _(underscore) 와 $ 문자 이외의 특수문자는 사용할 수 없다.
  • 자바의 키워드는 변수명으로 사용할 수 없다. (예: int, class, return 등)

 


[참고] 자바 키워드

abstract  continue  for         new        switch
assert    default   goto        package    synchronized
boolean   do        if          private    this
break     double    implements  protected  throw
byte      else      import      public     throws
case      enum      instanceof  return     transient
catch     extends   int         short      try
char      final     interface   static     void
class     finally   long        strictfp   volatile
const     float     native      super      while

 

잘못된 변수명의 사용예

 


int 1st;   // 변수명은 숫자로 시작할 수 없다.
int a#;    // 변수명에 특수문자를 사용할 수 없다.
int class; // 키워드를 변수명으로 사용할 수 없다.

 

· 자료형 (Type)

 

변수명 앞의 int, String 등은 변수의 자료형(Type)을 뜻한다.

int a; 라는 문장은 다음과 같이 해석된다.

변수a 는 int 자료형 변수이다. 즉 a라는 변수에는 int 자료형 값(1, 10, 25 등의 정수값)만 담을 수 있다.

String b; 라는 문장은 다음과 같이 해석된다.

변수 b는 String 자료형 변수이다. 즉 b라는 변수에는 String 자료형 값("a", "hello" 등의 문자열값)만 담을 수 있다.

 

· 변수에 값 대입하기

 

변수 선언 후 다음과 같이 변수에 값을 대입 할 수 있다.

 


int a;
String b;

a = 1;
b = "hello java";

 

변수에 값을 대입할 때는 위의 예에서와 같이 =(assignment) 기호를 사용한다.

 

a = 1; 이라는 문장은 다음과 같이 해석된다.

int 자료형 변수 a에 1 이라는 값을 대입한다.

b = "hello java"; 라는 문장은 다음과 같이 해석된다.

String 자료형 변수 b에 "hello java" 라는 값을 대입한다.

 

다음과 같이 선언과 동시에 값을 대입할 수도 있다.

 


int a = 1;
String b = "hello java";

 

· 자주 쓰이는 자료형

 

자료형에는 int, String 외에도 많은 자료형이 있다. 자바에서 가장 많이 사용되는 자료형은 다음과 같다.

  • int
  • long
  • double
  • boolean
  • char
  • String
  • StringBuffer
  • ArrayList
  • HashMap

예를 들어 StringBuffer, ArrayList 자료형에 해당되는 변수는 다음과 같이 만들 수 있다.

 


StringBuffer sb;
ArrayList aList;

 

위 코드는 다음과 같이 해석되어진다.

  • sb 변수는 StringBuffer 자료형 변수이다. sb 변수에는 StringBuffer 자료형에 해당되는 값만 담을 수 있다.
  • aList 변수는 ArrayList 자료형 변수이다. aList 변수에는 ArrayList 자료형에 해당되는 값만 담을 수 있다.

 

· 사용자 정의 자료형

 

또 나중에 공부하겠지만 사용자가 직접 자료형을 만들 수 있다.

예를 들어 다음과 같이 Animal 이라는 클래스를 만들면,

 


class Animal {
}

 

다음과 같이 Animal 자료형 변수를 만들 수 있다.

 


Animal cat;

 

위 코드는 다음과 같이 해석되어진다.

cat 이라는 변수는 Animal 자료형 변수이다. cat이라는 변수에는 Animal 자료형에 해당되는 값만 담을 수 있다.

이상과 같이 변수명과 자료형과의 관계에 대해서 알아보았다.

 

※ 자료형과 클래스등에 대해서는 앞으로 자세하게 알아볼 것이다. 자료형과 클래스에 대한 궁금증은 잠시 뒤로 미루도록 하자.

 

· 상수(Constant)

 

· 상수란?

 

프로그램이 실행되는 동안(선언과 값설정을 동시에 했다면) 값을 변경할수 없는 것을 말한다.

쉽게 말해 다시 재정의가 불가능 한 변환되지 않는 값을 말한다.

 


int number = 8;



위에 코드는 프로그램이 처리하는 기존 리터널 입니다.

이 리터널은 언제든지 변수에 값을 변경 가능하다는 점을 알고 계실 껍니다.

하지만 이 값이 절때 변경 되지 말아야 한다면 어떻게 할까요?


· 상수 만드는 방법

 

자바에서는 Final 메소드를 사용하여 만드는 변수를 상수 라고 합니다.

 


final int number = 100;


 

· 상수를 사용하고 에러가 나는 경우

 


public class Constant {

    public static void main(String[] args) {

        // final 을 자료형 앞에 붙이면 상수의 값이 고정되여 변화 하지 않는다

        final String name ="홍길동";

        System.out.println(name);

        name = "이순신";

        System.out.println(name);

    }

}


 

· 지난 과정 되짚기

 

Question 1 다음 중 메소드에 대한 설명이 아닌 것은?

 

  입력을 받아서 작업을 수행하고 결과를 내보내는 작은 기계이다.
  안에 들어있는 문장들을 차례대로 실행한 후에 작업의 결과를 외부로 반환한다..
  객체를 만드는 설계도이다.
  위에서 아래로 순차적으로 실행된다.

 

정답 확인