변수(Variable)란 : 값이 변할 수 있는 데이터를 임시적으로 저장하기 위한 수단
- 데이터를 저장하고, 읽어오기 위해서 메모리에 데이터를 저장할 공간을 생성하고 이름을 부여한다. 여기서 메모리 공간에 부여하는 이름을 '변수'라고 한다.
- 즉, 변수는 값을 저장할 수 있는 메모리 공간에 언제든지 다시 꺼낼 수 있도록 사람이 식별할 수 있는 이름을 붙인 것
변수 선언과 할당
변수 선언
- 변수를 사용하기 위해서는 먼저 변수를 선언하여야 한다.
- 변수를 선언할 때는 반드시 자료형과 함께 선언해야 하는데 여기서 자료형은 사용할 메모리의 공간을 나타낸다.
- 선언된 자료형은 변경할 수 없다.
- 자료형은 반드시 사용하기 전에 선언해야 하며, 자료형이 선언되지 않은 변수는 사용할 수 없다.
- 즉, 변수가 선언되면 자료형의 크기만큼 메모리 공간을 확보하며 확보한 공간을 '변수명'의 이름을 붙여 언제든지 변수를 사용할 수 있게 된다.
- 변수는 자신이 선언된 열린 중괄호({)의 닫힌 중괄호(})를 만나면 메모리에서 삭제된다.
// 자료형 변수명;
int num;
변수에 값 할당 (대입)
- 변수 선언 후 처음으로 값을 할당하는 것을 '초기화'라고 한다.
- 초기화가 이루어진 후에 다시 다른 값으로 할당하는 것을 '재할당'이라고 한다. (저장하고 있는 값이 변할 수 있는 메모리 공간)
- 주의해야 할 점은 선언만 하고 값을 할당하지 않은 상태로 변수를 사용하려고 하면 컴파일 오류가 발생하기 때문에 사용하기 위해서는 반드시 값을 할당해줘야 한다.
// 선언과 함께 할당
int num1 = 1; // 초기화
num1 = 3; // 재할당
// 선언과 할당 분리
int num2; // 초기화
num2 = 3; // 재할당
변수 이름 작성 규칙
가독성이 좋은 코드는 잘 지은 변수명에서 시작한다.
컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 짠다.
[리팩토링] 저자 마틴 파울러
필수 사항
- 지키지 않을 경우 문법 오류(syntax error)가 발생해 컴파일 자체가 불가능하다.
- 영문 대소문자와 한글을 사용할 수 있다.(한글은 되도록 사용하지 않는 편이 좋다.)
영문으로 작성된 이름은 대소문자를 구분한다. (Num, NUM, num 전부 다르게 인식) - 특수 문자는 언더바(_), 달러($)만 사용할 수 있다.
- 숫자를 사용할 수 있지만 첫 번째 글자로는 사용할 수 없다.
- 자바에서 사용되는 예약어는 사용할 수 없다. (int, byte, class, for, while 등등 이미 어떠한 기능이 정해져 있는 단어)
권장 사항 (변수명, 메서드명, 클래스명, 상수명)
개발자끼리의 약속이며, 지키지 않을 경우 오류는 발생하지 않지만 코드의 가독성이 현저히 떨어지므로 지키는 것이 좋다.
변수명과 메서드명
- 일반적으로 낙타 표기법(camelCase)를 사용한다.
- camelCase란 낙타의 등 모양을 닮았다고 해서 붙여진 이름으로, 영문 소문자로 시작하며 2개 이상의 영문 단어 조합이라면 결합되는 단어의 첫 번째 글자를 대문자로 표기해 구분하는 표기법
int camelCase;
boolean isEmpty(){}
클래스명
- 클래스명은 파스칼 표기법(PascalCase)를 사용한다.
- PascalCase란 첫 번째 문자를 대문자, 나머지 문자는 소문자로 표기하며 2개 이상의 영문 단어 조합이라면 각 단어의 첫 번째 글자를 대문자로 표기해 구분하는 표기법
class MyClass {}
상수명
- 상수명은 스네이크 표기법(SCREAMING_SNAKE_CASE)으로 작성한다.
- SNAKE_CASE란 모두 대문자로 표기하며, 2개 이상의 영문 단어 조합이라면 단어마다 언더바(_)를 사용해 구분하는 표기법
final int MY_AGE;
'Langauge > Java-basic' 카테고리의 다른 글
[Java] 제어문 (조건문 / 반복문 / 제어키워드) (0) | 2022.07.08 |
---|---|
[Java] 연산자 (0) | 2022.07.07 |
[Java] 자료형(Type) (0) | 2022.07.05 |
[Java] 리터럴 (Literal) (0) | 2022.07.05 |
[Java] Java - 미완 (0) | 2022.07.04 |