본문 바로가기

Java/기본 이론

[JAVA] Chapter 03. 변수와 자바 기초 문법

 

1. 변수란 무엇인가?

변수는 변화하는 수를 말하는데, java를 비롯한 프로그램에서 변수란 데이터를 담는 '공간'을 말한다.

컴퓨터는 기본적으로 데이터를 기억하는 '기억' 능력이 뛰어나지만, 동작에 융통성이 있는 것은 아니다.

때문에 모든 동작을 하나하나 지정해줘야 한다.

 

만약 우리가 컴퓨터에게 '사물함'안에서 '국어책'를 가져와! 라고 명령한다면, 컴퓨터는 우선 '사물함'이라는 항목을 알아야하고, 그 안에서 '국어책'이 가진 특성을 알아야한다.

우리가 사전에 컴퓨터에게 이러한 정보를 알려주지 않으면, 컴퓨터는 '네가 뭘 원하는지 나는 모르겠어'라고 대답한다.

이는 컴퓨팅 사고의 기초 영역인데, 컴퓨터에게는 모든 항목과 동작을 정의해줘야 그에 따라 구동한다는 것이다. 

 

 

 

 코딩이 무엇인지 가장 빠르고 쉽게 설명한 영상이다. 위의 영상을 보고 코딩에 대해서 이해해 보자.

 

컴퓨터의 사고 방식이 이해되었다면, 변수가 왜 중요한지 이해할 수 있을 것이다.

 

변수는 컴퓨터에게 데이터를 가져올 상자를 알려주는 것이다.

'상자'를 알려주면 컴퓨터는 '상자'안에 어떤게 담겨있던 구성물을 가져온다.

이러한 상자를 만들고 이름을 붙이는 동작을 변수 선언이라고 한다.

 

데이터 타입은 해당 정보가 가지는 고유 속성을 말하는데 명령어에 따라 변수가 가지는 데이터의 속성이 지정된다. 

int a;  

 

위에서 int는 데이터의 타입이고, a는 변수명이라고 할 수 있다.

이러한 변수 선언에 의해 메모리가 할당된다.

대부분의 프로그래밍 언어는 데이터 타입의 값에 따라 메모리의 값까지 할당된다. (java, C, C++ 등) 

 

이렇게 상자를 만들었으면 이 상자에 물건을 담아야한다.

프로그래밍 언어에서 = 는 '왼쪽의 값을 오른쪽으로 담는다'라는 의미로 사용된다.

직관적으로 수학의 = 와 동일한 것 같지만, '왼쪽에서 오른쪽으로 데이터를 담는다'라는 내용에서 엄밀하게는 다른 의미로 해석된다.  

int a;    a = 5; 
//위와 같은 변수 선언은 int a = 5; 이다

char ch = 'a'; 
// char 타입은 반드시 ' ' 를 이용하여 데이터를 할당한다. 

String str = "This is java code";
// String 타입은 반드시 " " 를 이용하여 데이터를 할당한다. 

 

위의 코드에서 a의 값은 5로 할당된다.

데이터는 항상 뒤에서 앞으로 할당된다는 점을 반드시 기억하자.  

또한, char 타입의 변수는 ' ' (한따옴표)를 이용하여 선언하고, String 타입의 변수는 " " (쌍따옴표)를 이용하여 선언한다. 

 

2. 변수의 메모리 크기

데이터 타입에 따라 할당되는 메모리 크기

 

변수 선언의 중요한 요소는 자바 프로그래밍에서 메모리 크기의 할당과 타입을 전체적으로 조정하기 때문이다.

변수의 개념은 로직의 기초이므로 반드시 기억해야한다.

쉽게 말해, 내가 '숫자 상자'라고 지정한 '상자'에는 '글자'를 담을 수 없다는 것이다.

 

메모리 크기는 부차적인 개념이라고 넘어갈 수 있지만 반드시 변수 타입과 데이터가 일치해야한다는 점은 기억하도록 하자. 

 

위의 데이터 타입의 값과 정보를 벗어나는 경우 오류가 발생한다.

데이터의 범위에 따라 할당되는 메모리 값이 다르기 때문이다.

예를 들어 int의 값의 범위보다 큰 2,222,222,222 를 입력하면 오류가 발생하여 값이 출력되지 않는다. 

 

3. 변수 할당의 규칙

변수는 전체 클래스에서 1개만 할당할 수 있다.

동일한 클래스에선 이미 할당한 변수나 함수, 정보, 명령어를 할당하거나 지정할 수 없다.

예약어를 변수명으로 사용할 수 없으나, 문자와 숫자, $, _의 조합으로 사용할 수 있다.

 

다만 숫자로 시작하면 변수 지정에 문제가 생긴다.

기본적으로 변수는 소문자로 시작하여 지정한다. (이는 프로그래머의 약속이므로 기억하자)

물론 한글도 변수 데이터로 지정할 수 있다.

 

다만 협업에 문제가 생기므로 한글로 변수 데이터를 지정하지 말자.

// 가능한 변수 지정 | 불가능한 변수 지정  

int abc; 
int Abc; 
int abc; //위의 중복  
int name2; 
int 2name; 
int $num;
int data_num; 
int #num; 
int if;

변수 선언은 기본적으로 소속한 회사나 프로젝트의 규칙을 따르지만, 되도록이면 직관적으로 지정하는 것이 좋다.

간단한 코드에서는 문제가 없으나 복잡한 코드의 경우, 변수에 무엇을 담는지 직관적으로 인식하는 것이 좋기 때문이다.

 

4. 실습 

백문이 불여일견이라는 말이 있듯이 프로그래밍도 반드시 직접 경험해보는 것이 좋다.

아래의 예시 코드를 보고 각 질문에 대한 답을 생각하고 답해보도록 하자.

드래그 하지 않으면 질문의 답이 보이지 않으니 충분히 생각하고 이해한뒤에 드래그하여 내용을 확인하자. 

 

public static void main(String[] args) {  

// 이것은 변수에 대한 실습입니다.  

int a = 10, 
b = 0;  
b = a;  
System.out.println("a"+a);  
System.out.println("b"+b);  
System.out.println(a+"+"+b+"="+(a+b));}}

 

Q1. 위의 코드에서 b에 어떠한 데이터가 할당되는가? 

b 에 데이터를 0으로 할당하였으나, 재차 a로 데이터를 할당하여 b의 값은 a와 동일하다. (할당 변수는 마지막을 따름)

 

 

 

Q2. 위의 프린트 값은 무엇인가? 

a10

b10

10+10=20

 

Q3. System.out.println 구문에서 (“ “)의 역할은 무엇인가? 

“ “ 안의 데이터를 그대로 출력한다. 

 

 

 

Q4. System.out.println(a+"+"+b+"="+(a+b)); 에서 (a+b)는 어떠한 역할을 하는가? 

코드에서 +는 한 괄호안에 다른 데이터를 추가로 기입할 때 사용하는 것이다. 

즉, 괄호가 빠지면 a와 b가 병렬로 출력되는 것이며 연산되지 않는다.