[Chapter 2] 변수 (Variable)_1

slchoi·2022년 1월 3일
0

자바의 정석

목록 보기
3/19
post-thumbnail

'자바의 정석 3rd Edition'을 공부하며 정리한 내용입니다.

1. 변수(Variable)


1.1 변수(variable)란?

  • 의미: 단 하나의 값을 저장할 수 있는 메모리 공간
  • 하나의 변수에 단 하나의 값만 저장할 수 있으므로, 새로운 값을 저장하면 기존의 값은 사라짐

1.2 변수의 선언과 초기화

1. 변수의 선언

int          age     ;
(변수타입)   (변수이름)
  • 변수타입: 변수에 저장될 값이 어떤 타입(type)인지를 지정하는 것
    • 저장하고자하는 값의 종류에 맞게 변수의 타입을 선택해서 작성
    • 정수형, 실수형, 문자형 등 다양한 타입을 제공
  • 변수이름: 변수에 붙인 이름
    • 이름을 이용해 저장공간(변수)에 값을 저장하고, 저장된 값을 읽어옮
    • 같은 이름의 변수가 열 개 존재해서는 안됨. 서로 구별될 수 있어야하기 때문
  • 변수를 선언하면, 메모리의 빈 공간에 변수타입에 알맞는 크기의 저장공간이 확보되고, 이 저장공간은 변수이름을 통해 사용할 수 있게 됨

2. 변수의 초기화

  • 변수를 선언한 이후부터는 변수를 사용할 수 있으나, 그 전에 반드시 변수를 '초기화(initialization)'해야 함
    • 이유: 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저정된 알 수 없는 값이 남아있을 수 있기 때문
  • 변수에 값을 저장할 때는 대입 연산자 '='를 이용. 오른쪽의 값을 왼쪽(변수)에 저장하라는 의미
  int age = 25; // 변수 age를 선언하고 25로 초기화
  • 변수는 한 줄에 하나씩 선언하는 것이 일반적이지만, 타입이 같은 경우 콤마를 구분자로 여러 변수를 한 줄에 선언하기도 함
  int a, b;
  int x = 0, y = 0;
  • 변수의 종류에 따라 변수의 초기화를 생략할 수 있는 경우도 있지만, 사용되기 전에 적절한 값으로 초기화하는 것이 좋음
    • 지역변수는 사용되기 전에 초기화를 반드시 해야 하지만 클래스변수와 인스턴스변수는 초기화를 생략할 수 있음 (자세한 내용은 6장에서)

3. 변수 계산 과정

age = age + 1;
-> age = 14 + 1; // 변수 age에 저장된 값을 읽어옮
-> age = 15; // 변수 age에 15를 저장
  • 변수에 값을 저장하는 대입연산은 우변의 모든 계산이 끝난 후에 제일 마지막에 수행됨

4. 두 변수의 값 교환하기

  • 변수 x, y가 있을 때, 두 변수에 담긴 값을 서로 바꾸려면 어떻게 해야 할까?
int x = 10;
int y = 20;
  • 변수를 하나 더 선언해 x의 값을 위한 임시 저장소로 사용
int x = 10;
int y = 20;
int tmp;
  • 아래와 같은 순서로 값 옮기기
1. 변수 x에 저장된 값을 변수 tmp에 저장
tmp = x;

2. 변수 y에 저장된 값을 변수 x에 저장
x = y;

3. 변수 tmp에 저장된 값을 변수 y에 저장
y = tmp;

1.3 변수의 명명규칙

  • 프로그래밍에서 사용하는 모든 이름을 '식별자(identifier)'라고 함
  • 식별자는 같은 영역 내에서 서로 구분될 수 있어야 함
  • 식별자 규칙
    1. 대소문자가 구분되며 길이에 제한이 없다.
      • True와 true는 서로 다른 것으로 간주
    2. 예약어를 사용해서는 안된다.
      • true는 예약어라서 사용할 수 없지만, True는 가능
    3. 숫자로 시작해서는 안 된다.
      • top10은 허용하지만, 7up은 허용되지 않음
    4. 특수문자는 '_'와 '$'만을 허용한다.
      • $harp은 허용되지만, S#arp은 허용되지 않음
  • 권장하는 규칙
    1. 클래스 이름의 첫 글자는 항상 대문자로 한다
      • 변수와 메서드의 이름의 첫 글자는 항상 소문자로 함
    2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
      • LastIndexOf, StringBuffer
    3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
      • PI, MAX_NUMBER
  • 자바에서는 모든 이름에 유니코드에 포함된 문자들을 사용할 수 있지만, 적어도 클래스 이름은 ASCII 코드(영문자)로 하는 것이 좋음. 유니코드를 인식하지 못하는 운영체제도 있기 때문
  • 변수의 이름은 짧을수록 좋지만, 약간 길더라도 용도를 알기 쉽게 '의미있는 이름'으로 하는 것이 좋음. 변수 선언문에 주석으로 변수에 대한 정보를 주는 것도 좋음
int curPos = 0;    // 현재 위치(current position)
int lastPos = 0;   // 마지막 위치(last position)
profile
예비 백엔드 개발자

0개의 댓글