[Java] 변수
Java변수 Variable
하나의 값을 저장하는 메모리 공간.
데이터를 담아두는 상자.
변수 선언
타입 이름;
타입이 필요로 하는 크기의 메모리 공간을 확보한다.
확보된 공간은 이름을 통해 사용한다.
변수 타입 Type
값의 종류.
값이 정수면 변수의 타입도 정수(byte, short, int, long)여야 한다.
타입이 같은 변수는 콤마(,)로 구분해서 같이 선언할 수 있다.
int a, b;
int c = 0, d = 0;
변수 이름
값이 저장되는 메모리 공간의 이름.
변수 초기화 Initialization
타입 이름 = 값;
변수를 사용하기 전에 처음으로 값을 저장하는 것.
변수 선언과 동시에 확보된 공간에 값을 저장한다.
값을 저장할 때는 대입연산자(=)를 사용한다.
int a; // Initialization X
int b = 0; // Initialization O
메모리는 여러 프로그램에서 공유하는 자원으로, 새로운 값을 저장하면 기존 값은 사라진다.
전에 다른 프로그램에서 저장한 '알 수 없는 값(Garbage value)'이 남아 있을 수 있다는 뜻이다.
특히 지역변수는 Stack영역이라 자동으로 초기화되지 않기 때문에 반드시 초기화해야 한다.
두 변수의 값 교환하기
값을 교환시키는 연산자가 없다.
임시 저장공간으로 쓰일 변수를 하나 더 선언해서 값을 회전시켜 교환한다.
int a = 1, b = 5;
int temp;
temp = a;
a = b;
b = temp;
식별자 Identifier
변수 이름, 클래스 이름, 메소드 이름 등 프로그래밍에서 사용되는 모든 이름.
식별자를 지을 때 지켜야 하는 규칙이 있다.
필수 규칙
- 대소문자를 구분한다.
- 길이에 제한이 없다.
- 숫자로 시작할 수 없다.
- 특수문자는 '_'와 '$'만 허용한다.
- 공백을 포함할 수 없다.
- 예약어를 사용할 수 없다.
권장 규칙
- 클래스 이름
첫 글자는 항상 대문자로 한다. ex) Love
하나 이상의 단어를 사용할 경우 각 단어의 첫 글자를 대문자로 한다. ex) 클래스: LoveField
- 변수/메서드 이름
첫 글자는 항상 소문자로 한다. ex) love
하나 이상의 단어를 사용할 경우 두 번째 단어부터 첫 글자를 대문자로 한다.(CamelCase, 낙타체) ex) loveField
- 상수
모두 대문자로 한다. ex) LOVE
하나 이상의 단어를 사용할 경우 밑줄 문자(_)로 구분한다. ex) LOVE_FIELD
예약어 Keyword
프로그래밍 언어에서 이미 사용되는 단어.
Keyword | Explanation | Keyword | Explanation |
---|---|---|---|
abstract | 추상 클래스/메소드로 선언 | instanceof | 객체의 타입을 확인 |
assert | 조건문 | int | 정수형 변수 |
boolean | 논리형 변수 | interface | 추상 클래스로 선언 |
break | 반복문, switch 종료 | long | 정수형 변수 |
byte | 정수형 변수 | native | 자바외 다른 언어를 사용했음을 알림 |
case | switch 조건문 | new | 객체, 인스턴스 생성 |
catch | try-catch-finally문에서 예외 처리할 때 사용 | null | 메모리에 할당 안된 상태. 숫자 타입에는 사용 불가. |
char | 문자형 변수 | package | 접근 제한자. 다른 클래스에서 접근 불가능. |
class | 클래스 선언 | protected | 접근 제한자 |
const | 사용되지 않는 예약어 | public | 접근 제한자. 누구나 접근 가능. |
continue | 반복문의 조건절로 이동 | return | 값 반환 또는 메서드 종료 |
default | switch문에서 case에 해당 사항이 없을 때 실행 | short | 정수형 변수 |
do | do-while문에서 사용 | static | 클래스/변수 공유 |
double | 실수형 변수 | strictfp | strict 소수 값 제어자 |
else | if-else문에서 사용 | super | 상위 클래스의 생성자/멤버변수/메서드 호출. |
enum | enum 선언 | switch | 조건문 |
extends | 클래스 상속에 사용. 하나만 가능 | synchronized | 동시 접근 제한자 |
false | 조건/논리 계산 결과. boolean에서 사용. 사실이 아니다. 틀리다. | this | 인스턴스가 본인을 가리킬 때 사용 |
final | 변수 값 고정. 값 수정 불가능. | throw | 예외를 발생시키거나 호출한 클래스로 넘어가기 |
finally | try-catch문이 끝난 후 반드시 실행 | throws | 예외를 던질 수도 있다고 선언. |
float | 실수형 변수 | transient | Serializable할 때 저장되거나 전송되지 않는 객체를 선언 |
for | 반복문 | true | 조건/논리 계산 결과. boolean에서 사용. 사실이다. 맞다. |
goto | 사용되지 않음 | try | try-catch-finally문. |
if | 조건문 | void | 반환 값 없음. |
implements | 인터페이스(추상 클래스 상속). 다중 상속 가능. | volatile | 하나의 변수를 여러 쓰레드가 참조할 때 모두 동일한 값을 바라보도록 함. |
import | 외부 클래스를 사용할 때 쓰임 | while | 반복문. 무한 루프. |
참고 서적: 자바의 정석 3판