[Java] 변수의 개념과 이해

변수(variable)

: 특정 데이터 값을 저장하는 메모리 공간에 붙인 이름으로, 변할 수 있는 값을 담는 그릇


변수 타입

타입 이름 사용 범위 크기 비고
정수형 byte 정수를 나타낼 때 사용   1byte  
정수형 short 정수를 나타낼 때 사용   2byte  
정수형 int 정수를 나타낼 때 사용   4byte 주로 정수형에서는 int와 long을 사용한다.
정수형 long 정수를 나타낼 때 사용
값 뒤에 l을 붙임
  8byte 20억 넘을 것 같으면 long을 사용
실수 float 실수를 나타낼 때 사용
값 뒤에 f를 붙임
    소숫점 계산 등 정밀도가 낮음

실수 double 실수를 나타낼 때 사용     float는 실수 표현 범위 작아, 실수는 double 사용을 권장
문자형 char 문자열을 나타낼 때 사용     문자 한 글자를 나타낼 때 사용
컴파일러가 유니코드로 매핑 변환 후, 유니코드 정수 값 저장
문자형 String 문자열을 나타낼 때 사용     주로 char 대신 String을 사용
논리형 boolean 참과 거짓 값을 나타낼 때 사용     조건문에서 자주 사용



변수 선언

  • 변수를 사용하기 위해 변수를 선언
  • 변수를 선언하면 컴퓨터의 메모리 공간을 확보하는데, 확보한 곳에 데이터를 저장
  • 저장한 데이터는 변수 이름을 통해서 해당 메모리 공간에 접근


변수 선언 방법

// 1. 변수 선언, 초기화 각각 따로
int a;
a = 10;
System.out.println(a);

// 2. 선언, 초기화 동시에
int b = 20;
System.out.println(b);
  1. 변수로 저장할 데이터 종류를 명시
  2. 변수 이름을 명시
  3. 선언과 동시에 값을 명시
    1. 선택 사항으로 선언과 초기화를 따로 할 시에는 값을 명시해 주지 않아도 됨

// 3. 여러 변수 선언과 초기화 한 번에
int c = 3, d = 5;
System.out.println(c);
System.out.println(d);
  • 같은 데이터 타입의 변수라면 한 번에 여러개의 변수를 선언할 수 있음


타입별 선언 예시

int a = 100; // 정수
double b = 10.5; // 실수
boolean c = true; // boolean T/F
char d = 'A'; // 문자 하나
String e = "Hello, Java!"; // 문자열, 문자열을 다루기 위한 특별한 타입



변수 대입

int a = 100; // 정수
  • 변수에 값을 대입해서 저장
  • a = 10에서 =은 수학적 의미 아님



변수 초기화

: 처음 대입해서 저장하는 작업을 초기화라고 함

double b = 10.5; // 실수
boolean c = true; // boolean T/F
char d = 'A'; // 문자 하나
  • 변수는 꼭 초기화하고 사용해야 함
    • 변수가 차지하게 된 공간에 기존에 어떤 값이 들어가 있을지 모름
    • 따라서 이상한 값이 출력될 수 있기 때문에 이런 문제를 예방하기 위해 자바는 변수 초기화를 강제화 함
    • 초기화하지 않고 사용할 경우 컴파일 에러
      • java: variable a might not have been initialized
    • 지역 변수: 개발자가 직접 초기화
    • 클래스, 인스턴스 변수: 자바가 자동 초기화
  • 변수에 직접 넣은 값들을 리터럴이라고 함
    • 고정된 값을 의미함


변수 값 변경

  • 변수 값을 변경하면 변수에 기존에 있던 값은 삭제됨


변수 명명 규칙

  1. 변수 이름에는 영문자(a-z, A-Z), 숫자(0-9), 달러 기호($) 또는 밑줄(_)만 사용
  2. 변수 이름 숫자로 시작할 수 없음
  3. 이름에 공백 사용할 수 없음
  4. 자바의 예약어를 변수 이름으로 사용할 수 없음(ex. int, class, public)
  5. 소문자로 시작하는 낙타 표기법(ex. studentSum)


자바 언어의 관례

"클래스는 대문자로 시작, 변수명은 소문자로 시작"

  • 클래스가 두 개 이상의 단어로 이어지면 낙타표기법
  • 변수 이름은 의미 있고, 용도 명확하게 설명


자바 언어 관례의 예외 2가지

  1. 상수는 모두 대문자를 사용하고 언더바로 구분 (ex. USER_LIMIT)
  2. 패키지는 모두 소문자로 사용
    1. ex. package variable;
// 잘못된 예시
int a;
int b;

// 정확한 예시
int studentSum;