변수: 값이 변할 수 있는 수 를 뜻한다.
우리가 사용하는 값: 3, "hello", 'c' 등은 고정된 값이지만, 때에 따라 고정된 값을 자유롭게 담을 수 있는 그릇이 필요하다.
변수 선언은 다음과 같이 한다.
// [변수 타입] [변수 이름];
String a;
값 할당은 다음과 같이 한다.
// [변수 타입] [변수 이름];
a = "Hello World!";
그럼 다음 코드를 실행해 보자.
String a;
a = "Hello World!";
System.out.println(a);
System.out.println();
a = "World is hello!";
System.out.println(a);
아직 입력을 배우진 않았으나, 무언가 값을 입력받아서 저장해 두고 나중에 쓰려면 변수가 필수적이다.
또한 변수가 있으면, 값이 가지는 의미를 조금 더 명확하게 표현할 수 있다.
또한 변수를 이용하면, 나중에 값이 바뀔 때 코드를 효율적으로 수정할 수 있다.
다음 코드를 읽어 보자.
System.out.println("Hello World!");
System.out.println("Bye World!");
System.out.println("Hello World!");
System.out.println("Bye World!");
System.out.println("Hello World!");
System.out.println("Bye World!");
여기서 Hello World!
라는 문장 대신 World Hello!
라는 문장을 사용하고 싶다고 하자. 그러면 우리는 코드 세 줄을 수정해야 할 것이다.
이제 다음 코드를 확인해 보자.
String a = "Hello World!";
String b = "Bye World!";
System.out.println(a);
System.out.println(b);
System.out.println(a);
System.out.println(b);
System.out.println(a);
System.out.println(b);
이젠 어떤가? 똑같은 변화를 주고 싶다면, 한 줄만 바꿔도 된다.
한 단계 더 나아가 다음 코드를 보자.
String helloString = "Hello World!";
String byeString = "Bye World!";
System.out.println(helloString);
System.out.println(byeString);
System.out.println(helloString);
System.out.println(byeString);
System.out.println(helloString);
System.out.println(byeString);
이제 우리는 변수가 가지고 있는 값이 어떤 값인지 변수 이름을 통해 유추할 수 있다.
컴퓨터는 0과 1밖에 모른다. 때문에 컴퓨터가 값을 저장하려면 0과 1로만 어떻게든 저장해야 한다. 너무 자세히 다루지는 않겠다.
정수의 경우에는 이진법을 사용하면 간단하게 표현할 수 있을 듯 하다.
실수의 경우에는 IEEE 754라는 기법이 있다.
문자의 경우에는 각 문자마다 대응되는 ASCII Code가 있다.
논리의 경우에는 참 / 거짓밖에 없기 때문에, 1개의 byte만 차지한다.
타입 | 자료형 | 차지하는 공간 | 나타내는 값의 범위 |
---|---|---|---|
정수 | byte | 1 byte | -128 ~ 127 |
short | 2 byte | -32,768 ~ 32,767 | |
int | 4 byte | -2,147,483,648 ~ 2,147,483,647 | |
long | 8 byte | –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
실수 | float | 4 byte | 제한 없음(엄밀하게는 있음) |
double | 8 byte | 제한 없음(엄밀하게는 있음) | |
문자 | char | 1 byte | 0 ~ 255 |
논리 | boolean | 1 byte | true, false |
non-primitive type의 반대로는 primitive type이 있다. 이 8개의 타입을 제외하고, 모든 변수는 primitive type이다.
간단히 설명하자면, non-primitive type 변수는 변수 자체가 값을 가지고 있지만, primitive type는 값은 어디다가 갖다 놓고, 그 갖다 놓은 주소를 가지고 있다. 때문에 reference type이라고도 한다.
알파벳
, 숫자
, _
, $
만 쓸 수 있다.숫자
가 올 수는 없다._
로 잇는다.int a = 1, b = 2; // 권장되지 않음
int num1 = 1, num2 = 2; // 권장됨
int Num = 30; // 권장되지 않음
int num = 30; // 권장됨
int NumbERofsTudentsinmyclass = 30; // 권장되지 않음
int numberOfStudentsInMyClass = 30; // 저거보단 권장됨
int numberOfStudentsInMyClass = 30; // 권장되지 않음
int nStd = 30; // 권장됨
final double piValue = 3.141592; // 권장되지 않음
final double PI = 3.141592; // 권장됨