[Must Have] 이재환의 자바 프로그래밍 입문 책을 읽고 정리한 글입니다.
💡 학습 목표
변수와 상수의 개념을 확장해보자.
자료형의 형변환이 무엇인지 알아보자.
1. 변수
값이 변하는 수를 말한다.
1.1 변수의 이해
int num = 1;
위 코드에 대한 컴퓨터 동작은 다음과 같다.
- 자료형이 int이니 메모리에 주소 네 개를 확보해 공간을 비워둔다.
- 십진수 1을 이진수로 변경해서 주소에 저장한다.
- 주소를 변수 num에 기억시킨다.
System.out.print(num);
위 코드에 대한 컴퓨터 동작은 다음과 같다.
- num 변수의 값을 메모리에서 찾아온다.
- 찾아낸 메모리의 시작 위치로 찾아간다.
- num 변수는 int형이기 때문에 4바이트를 읽는다.
- 10진수로 바꿔서 숫자로 반환한다.
(char형이면 유니코드표를 보고 디코딩해서 문자로 알려준다.)
1.2 변수명 짓는 방법
제약 사항
- 변수의 이름은 숫자로 시작할 수 없다.
- $와 _ 이외의 다른 특수문자는 변수의 이름에 사용할 수 없다.
- 키워드는 변수의 이름으로 사용할 수 없다.
ex) public, class, int, double 같은 단어들을 말하낟.
권장 사항
- 소문자로 시작한다.
클래스의 이름이 대문자로 시작하는 것과 구분하기 위함
- 변수에 사용되는 데이터를 유추할 수 있는 이름으로 만들어준다.
여러 단어를 사용할 땐 카멜 표기법을 이용하여 만들어도 된다.
2. 상수
상수는 변하지 않는 값을 의미한다.
자바에서는 리터럴 상수와 final 상수로 두 가지 종류가 있다.
2.1 리터럴
문자 그대로의 값을 의미한다. 문자 자체에 의미가 있어 누구나 공통으로 그 의미를 알고 의미를 변경할 수 없다.
지금까지 변수에 대입하던 모든 숫자, 문자, 논리값(true, false)들을 말한다.
2.2 final 상수
상수를 프로그래머가 임의로 만들 수 있다. 자바에선 final 키워드를 사용하여 상수를 만든다.
final 상수 이름은 대문자를 사용하여 만든다. 언더바 "_"를 이용해 단어를 구분한다.
final double PI = 3.14;
final int MAX_SIZE = 100;
- 모두 대문자라 첫 글자가 소문자인 변수의 이름과 구분된다.
- 모두 대문자라 단어의 첫 글자만 대문자인 클래스의 이름과 구분된다.
final 상수는 값을 대입한 이후에는 다른 값을 대입받아 바꿀 수 없다. 처음에 final 상수를 만들 때 값을 지정하지 않았다면 한 번을 넣어 줄 수 있다.
3. 자료형의 형변환
3.1 상수값 대입 시 형변환
형변환을 말하는 표현
| 주최 | 용어 1 | 용어 2 |
|---|
| 컴파일러(가 자동으로) | 자동 형변환 | 묵시적(암묵적) 형변환 |
| 프로그래머(가 직접) | 강제 형변환 | 명시적 형변환 |
3.2 연산 시 형변환
연산 시 다른 자료형이 입력되면 큰 쪽에 맞춰서 먼저 형 변환을 한 후 계산을 한다.
핵심 요약
- 변수는 메모리 공간을 기억하는 용도로 사용된다.
- 자바의 상수에는 리터럴 상수와 final 상수가 있다.
- 자바 컴파일러는 정수형 리터럴 상수를 int형으로 처리한다.
- 자바 컴파일러는 실수형 리터럴 상수를 double형으로 처리한다.
- 변수에 데이터를 대입할 때와 데이터끼리의 산술 연산을 할 때 형변환이 일어난다.