"이번 레슨도 내가 한다. 설명하지 못한 게 있거든. 변수와 메모리 주소 지정에 관해 말해 줄게. 너무 깊이 파고들지는 않겠지만 적어도 뭔가 기억한다면 좋겠다."

"레슨에 접근하는 선생님의 방식이 정말 마음에 들어요. 뭔가 이해한다면 대단한 거야. 아무것도 이해하지 못해도 괜찮다."

"사랑은 강요할 수 없으니까. 이해되네요. 네 행성에서도 그렇지 않아?"

"저희는 좀 다르게 접근해요. 공부하고 싶으면 공부하고, 하고 싶지 않아도 마지못해 공부한다."

"배움에 있어서 얼마나 후진적인 접근 방식인가! 에너지와 시간을 많이 낭비하는 데다 좋지 못한 결과를 낳지."

"그런대로 낭비할 밖에요. 씁쓸한 얘기는 그만하자."

"좋아요. 엑셀을 생각해 봐. 엑셀은 누구나 알고 있지. 엑셀 시트는 셀로 구성되어 있다. 각 셀에는 고유한 자체 식별자(A1, A2,...B1, B2)가 있다. 어떤 셀의 식별자를 알고 있다면 거기에 언제나 값을 적거나 거기에 저장한 어떤 값도 취할 수 있다. 컴퓨터 메모리도 아주 비슷한 방법으로 조직되어 있다."

메모리 주소 지정과 변수 - 1

"지금까지는 이해해요."

"프로그램을 실행할 때 프로그램과 프로그램 데이터가 메모리에 저장된다. 모든 컴퓨터 메모리는 바이트라고 부르는 작은 셀로 나뉜다. 각 셀에는 연관된 고유한 식별자 또는 셀과 연관된 번호가 있다. 0,1,2,3,...(숫자는 0으로 시작한다). 셀 번호를 알면 셀 안에 데이터를 저장할 수 있다. 또는 셀에서 데이터를 취할 수 있다. 일부 셀에는 프로그램 코드, 즉 프로세서에 대한 명령어 집합을 저장한다. 다른 셀에는 프로그램에서 사용하는 데이터를 저장한다. 각 셀의 번호를 주소라고 부른다."

"교수님이 프로세서와 명령어를 이미 언급하셨지만, 자세한 말씀은 안 하셨어요."

"프로세서는 메모리에 로드된 명령어를 실행하는 방법을 안다. 거의 모든 프로세서 명령어는 '어떤 셀에서 데이터를 가져와라, 가져온 데이터로 뭔가를 해라, 결과를 다른 셀로 보내라'와 같은 것이다. 수백 개의 간단한 명령어를 조합해 복잡하고 유용한 명령을 만들어 낸다."

"그런데 이 모든 것이 왜 필요한가요?"

"코드에서 변수가 선언되면, 사용되지 않은 메모리에 선언된 변수를 할당한다. 보통 몇 바이트 정도로 할당한다. 변수를 선언하려면 프로그램이 변수에 저장할 정보 유형(숫자, 텍스트 또는 다른 데이터 유형)을 지정해야 한다. 편의상 각 변수에 고유한 이름을 지정하지."

"변수가 이름, 유형, 메모리의 일부, 값도 된다는 뜻인가요?"

"그런 것들이 모두 하나로 합쳐졌다고 봐야지. 몇 가지 예를 보자."

코드 설명
1
String s;
여기서는 s라는 변수를 생성한다. 텍스트를 저장하는데 사용할 변수니까 유형을 String으로 선언한다.
같은 함수나 클래스에서 동일한 이름으로 다른 변수를 선언할 수는 없다.
2
String s2 = "I'm Diego";
이 줄은 s2라는 문자열 변수를 생성하고 변수 값인 "I'm Diego"를 즉시 저장한다.
3
int a;
여기서는 a라는 변수를 생성한다. 이 데이터 유형이 변수에 저장될 데이터 유형과 일치한다. int 데이터 유형은 integer의 약어이다.
4
int b = 4;
b라는 변수를 생성한다. 데이터 유형(int)은 정수를 저장한다. 값 4가 변수에 즉시 지정된다.

"여기 디에고가 보낸 과제가 몇 개 있다. 한 번에 조금씩 해보도록."