Dico

[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

프로그래밍 언어에서 이미 사용되는 단어.

KeywordExplanationKeywordExplanation
abstract추상 클래스/메소드로 선언instanceof객체의 타입을 확인
assert조건문int정수형 변수
boolean논리형 변수interface추상 클래스로 선언
break반복문, switch 종료long정수형 변수
byte정수형 변수native자바외 다른 언어를 사용했음을 알림
caseswitch 조건문new객체, 인스턴스 생성
catchtry-catch-finally문에서 예외 처리할 때 사용null메모리에 할당 안된 상태. 숫자 타입에는 사용 불가.
char문자형 변수package접근 제한자. 다른 클래스에서 접근 불가능.
class클래스 선언protected접근 제한자
const사용되지 않는 예약어public접근 제한자. 누구나 접근 가능.
continue반복문의 조건절로 이동return값 반환 또는 메서드 종료
defaultswitch문에서 case에 해당 사항이 없을 때 실행short정수형 변수
dodo-while문에서 사용static클래스/변수 공유
double실수형 변수strictfpstrict 소수 값 제어자
elseif-else문에서 사용super 상위 클래스의 생성자/멤버변수/메서드 호출.
enumenum 선언switch조건문
extends클래스 상속에 사용. 하나만 가능synchronized동시 접근 제한자
false조건/논리 계산 결과. boolean에서 사용. 사실이 아니다. 틀리다.this인스턴스가 본인을 가리킬 때 사용
final변수 값 고정. 값 수정 불가능.throw예외를 발생시키거나 호출한 클래스로 넘어가기
finallytry-catch문이 끝난 후 반드시 실행throws 예외를 던질 수도 있다고 선언.
float실수형 변수transientSerializable할 때 저장되거나 전송되지 않는 객체를 선언
for반복문true조건/논리 계산 결과. boolean에서 사용. 사실이다. 맞다.
goto사용되지 않음try  try-catch-finally문.
if조건문void반환 값 없음.
implements인터페이스(추상 클래스 상속). 다중 상속 가능.volatile하나의 변수를 여러 쓰레드가 참조할 때 모두 동일한 값을 바라보도록 함.
import외부 클래스를 사용할 때 쓰임while반복문. 무한 루프.

참고 서적: 자바의 정석 3판