JAVA 변수

Dev.Shinny·2022년 9월 20일
0

자바의 정석

목록 보기
1/18

1. 변수(variable)

흔히 '변수'를 값이 특정지어지지 않아 임의의 값을 가질 수 있는 문자라 생각한다. 이는 수학적 개념에서 바라본 변수다. 그러나 프로그래밍에서 변수는 '값을 저장할 수 있는 메모리상의 공간'을 의미한다. 하나의 변수는 단 하나의 값만 저장 가능해, 새로운 값을 저장하면 기존의 값은 사라진다.

예를 들어 물건을 하나만 넣을 수 있는 상자가 있다. 상자에 책 한 권을 담으면 더이상 상자에 다른 물건을 담을 수 없다. 다른 물건을 담기 위해서는 이미 담은 책을 빼야 담을 수 있다. 이때 상자가 앞서 설명한 '변수'가 되는 것이다.

1.1 변수의 초기화

변수를 사용하기 위해서는 아래와 같은 형식에 맞게 변수를 선언해야 한다.

int 는 '변수타입'으로 변수에 저장될 값이 어떤 타입인지를 지정하는 것이다. 이것을 프로그래밍 언어에서 '자료형'이라 부른다. 앞서 예를 들었던 상자를 다시 생각해보자. 작은 물건을 담을 때 굳이 거대한 상자를 사용할 필요는 없다. 거대한 상자에 사탕 하나를 담는 다면 이것은 공간을 낭비하는 일이다. 변수도 마찬가지다. 변수에 저장될 값의 크기에 맞게 자료형을 선택해야 한다. 0.1 , 4.55 와 같은 실수이므로 실수형의 자료형을, 33, -25와 같은 정수는 정수형 자료형을 사용한다.

A 는 '변수이름'으로 말 그대로 변수에 붙인 이름이다. 또 상자 이야기다. 물건을 담은 상자가 많아진다면 우리는 어떤 상자에 무엇이 담겼는지 구분하기 어려워진다. 그래서 상자마다 A상자, B상자, C상자 등 이름을 붙인다면 쉽게 구분할 수 있다. 당연한 말이지만 같은 이름의 변수는 존재해서는 안된다. 서로 구별할 수 없기 때문이다.

다시 정리하면, 변수를 사용하기 위해선 형식에 맞게 변수를 선언해야 하며, 변수 타입에 맞는 자료형을 선택하여 알맞은 크기의 저장공간을 확보하고, 이 저장공간에 '변수이름'을 통해 변수를 구분할 수 있어야 한다.

1.2 변수의 초기화

변수를 선언하고 나면 반드시 변수를 '초기화(initialization)'해야 한다. 메모리는 여러 프로그램이 공유하는 자원이기 때문에 다른 프로그램에 의해 '알 수 없는 값(쓰레기 값)'이 저장되어 있을 수 있기 때문이다. 창고에 상자가 총 20개가 있고 가족이 이를 공유한다 생각하자. 서로가 필요에 따라 상자를 사용할 것이다. 어느날 창고에서 상자 하나를 꺼내왔는데 알 수 없는 물건이 담겨 있다. 이때 이 물건이 다른 프로그램에 의해 담긴 쓰레기값이 되는 것이다. 가져온 상자를 사용하기 위해선 나의 물건을 담는 과정이 필요하다. 이것이 바로 변수의 초기화다.

변수에 값을 저장할 때는 '대입 연산자 ='를 이용한다. 수학에서는 양변의 값이 같다는 뜻이지만, 프로그래밍에서는 '대입'의 의미를 갖는다.

int(정수형) 크기의 상자 A에 25를 대입(초기화)했다.
정리하면 변수의 초기화는 '변수에 처음 값을 저장하는 것'이다.

int a;
int b;
int a = 13;
int b = 25

int c=14, d=26; 

선언하고 초기화를 해도 되고, 선언과 동시에 초기화를 해도 된다.

1.3 두 변수의 값을 교환

변수 x, y 가 있고 두 변수에 각각 1, 2 가 저장되어 있을 때 값을 서로 바꾸려면 어떻게 해야할까?

다시 상자를 생각하면 이해하기 쉽다. 우리는 두 개의 상자(X,Y)를 가지고 있다. 우리가 갖고 있는 상자는 마술상자라 새롭게 물건을 넣으면 기존의 물건은 사라진다. 두 상자에는 각각 목도리(X상자)와 장갑(Y상자)이 들어있다. 상자의 물건을 서로 바꾸려고 목도리를 상자에서 빼 장갑이 들어있는 상자에 넣었다. 마술상자기 때문에 기존의 장갑이 사라지고 목도리가 담겼다. 낭패다. 목도리가 빠지고 남은 빈 상자에 담을 장갑이 사라졌다. 어떻게 해결하면 좋을까? 바로 빈 상자 하나(Z)를 더 준비하는 것이다.

X 상자 = 목도리 , Y 상자 = 장갑 , Z 상자 = 비어있음

1. X상자에서 목도리를 빼 Z 상자에 넣는다.
X 상자 = 비어있음, Y 상자 = 장갑, Z 상자 = 목도리

2. Y상자에서 장갑을 빼 비어있는 X상자에 넣는다.
X 상자 = 장갑, Y 상자 = 비어있음, Z 상자 = 목도리

3. Z상자에서 목도리를 빼 비어있는 Y상자에 넣는다.
X 상자 = 장갑, Y 상자 = 목도리, Z 상자 = 비어있음

int x = 1, y = 2;
int temp;

temp = x ;
x = y ; 
y = temp ;

1.4 변수 이름 규칙

'변수 이름'처럼 프로그래밍에서 사용하는 모든 이름을 '식별자'라고 한다. 이 식별자는 서로 식별(구분)될 수 있어야 하기 때문에 다음과 같은 규칙을 지켜야 한다.

  1. 대소문자가 구분되며 길이 제한이 없다.
  2. 예약어는 사용하면 안 된다.
  3. 숫자로 시작하면 안 된다.
  4. 특수문자는 '_', '$'만 허용된다.

예약어는 키워드(keyword)라고도 하는데, 프로그래밍 언어와 구문에 사용되는 단어다. 다시 말해 이미 정해져 존재하고 있는 이름으로 사용할 수 없다는 것이다. 프로그래밍 언어를 조금이라도 배웠다면 알 수 있는 if, for, null, return, break 등이 예약어이다.

이 외에 프로그래머들이 암묵적인 약속으로 지키는 규칙들이 있다.

  1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
  2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
  3. 상수의 이름은 모두 대문자로 한다.

위와 같은 규칙을 지키지 않았다고 프로그래밍을 하는데 문제가 생기는 것은 아니다. 그러나 위와 같은 규칙을 지킴으로 코드에 대한 가독성이 높아진다. 처음부터 습관처럼 익히는 것이 필요하다 생각한다.




다..다시는 이런 식으로 글 쓰지 않을거야. 그냥 정리만 할거야.

profile
Hello I'm Shinny. A developer who try to enjoy the challenge.

0개의 댓글