[Java] Chapter 1-3. 프로그래밍의 3대 요소(변수, 자료형, 할당)

 

 

✍️ 프로그래밍의 3대 요소

프로그래밍의 3대 요소를 이해하면 Java뿐만 아니라 어떤 언어를 배워도 쉽게 이해할 수 있다.

프로그래밍의 3대 요소 : 변수, 자료형(Data type), 할당(=)

 

머릿속으로 493+1982를 구해보자. 피연산자 493과 1982를 머릿속으로 기억하고 계산해서 덧셈의 결과인 2475를 머릿속 어딘가에 잘 저장할 것이다.

 

프로그램도 마찬가지다. 493과 1982를 어딘가에 저장하고 더하고 결괏값을 저장해둘 것이다. 

여기서 말하는 어딘가가 바로 메인 메모리를 의미하고 더 구체적으로 493, 1982, 2475가 저장되는 공간을 변수라고 한다.

변수는 다른 말로 기억 공간이라고 해석할 수 있으며 변수를 만들기 위해선 두 가지 요소를 고려해야 한다. 첫 번째로 '크기'를 고려해야 하고 두 번째로 정수인지 실수인지 문자인지 등 '떤 종류의 데이터를 저장할 것인가'도 고려해야 한다. 프로그래밍 언어는 변수의 크기와 데이터의 종류를 함께 고려해서 이미 정의된 키워드를 개발자에게 제공하는데 이것이 바로 자료형이다. Java에서 4byte 정수형 변수의 자료형은 int, 8byte 실수형 변수의 자료형은 double이 대표적인 자료형이다.

 

자바 프로그래밍을 예시로 4byte 정수형 변수를 만들되 그 이름을 a라고 하고 싶다면 다음과 같이 작성할 수 있다.

그리고 이것을 조금 더 전문적인 용어로 'a라는 변수를 선언했다.'라고 말한다.

int a;

 

마지막으로 선언한 변수에 값을 넣어주는 것을 할당이라고 한다.

int a, b, c;
a = 493;
b = 1982;
c = a + b;

 

정리하면, 데이터들을 메모리에 들고 있기 위해 필요한 것은 변수, 변수의 크기와 종류를 결정짓는 것은 자료형, 변수에 데이터를 집어넣는 할당만 이해하면 프로그래밍을 시작할 수 있다.

int a, b, c;
a = 493;
b = 1982;
c = a + b;

System.out.println("덧셈의 결과 " + c);
// 덧셈의 결과 2475

 

🍊 Java의 자료형

컴파일러에서 기본적으로 제공해 주는 자료형을 기본 자료형이라 부른다. 

정수형 : short, int, long

실수형 : float, double

문자형 : char

논리형 : boolean

int i = 10; // 정수형 4byte
System.out.println(i);

float f = 12.34f; // 실수형 4byte
System.out.println(f);

char c = 'A'; // 문자형 2byte
System.out.println(c);

boolean b = true;
System.out.println(b);

결과
10
12.34
A
true

 

간단한 프로그램은 기본 자료형만으로도 충분히 작성할 수 있지만 복잡한 프로그램은 기본 자료형만으론 해결할 수 없다. 사람, 책, 자동차 등 여러 정보를 포함하는 사물에 대한 기본 자료형은 제공하지 않기에 개발자가 직접 만들어서 사용해야 하는데 이를 사용자 정의 자료형이라 부르며 Java에선 클래스를 도입해서 이러한 문제를 해결하고 있다. 나아가 클래스를 활용해 프로그래밍하는 것을 객체지향 프로그래밍이라 한다.

Person person;
//기본적으로 이런 자료형은 없다.
//Person이 가진 성질을 이해하고 내가 설계해야함
//Person은 이름, 생년월일, 주민등록 번호, 성별이 포함될 수 있다.

 

🤔 변수의 선언과 할당, 심볼테이블

변수를 선언하면 변수를 위한 공간이 메인 메모리에 할당되며 공간의 위치를 '주소'라는 개념으로 구분한다.

int a;

예를 들어 변수 a를 위한 공간이 메인 메모리의 주소 1000번지라고 가정하면 값 999는 1000번지에 저장된 셈이다.

a = 999;

 

 

심볼테이블에 대해서 알아보자, 변수를 선언하면 변수의 이름과 주소를 담고 있는 심볼테이블(변수 목록표)에 변수가 추가된다.

변수 a를 선언한 시점에서 심볼테이블의 상태 [ a , 1000 ]

int a; // a의 주소는 1000

아래와 같이 코드를 작성하면 심볼테이블에서 a를 찾고 a의 주소인 1000을 참조해 메인 메모리에 888을 할당하게 된다.

a = 888;

만약 변수 b에 666을 할당하려 한다면 심볼테이블에서 b를 찾을 것이고, 테이블상에서 b라는 변수는 없기에 에러가 발생할 것이다.

b = 666; // error!

 

정리하면 심볼테이블은 선언된 변수들을 관리하기 위해서 만들어진 테이블이다.