엘리, 변수, 데이터 유형 - 1

분홍 머리 여자가 선실로 들어왔습니다. "인간 여자는 머리털이 모두 이런가?"하고 아미고는 생각했죠.

"안녕! 내 이름은 엘리너 캐리야. 엘리라고 불러도 돼. 난 여기 '걸랙틱 러시'호의 항해사야."

"안녕하세요, 항해사님." 아미고는 힘겹게 말했습니다.

"자바 언어에서 가장 흥미로운 부분인 변수를 설명할게."

"열심히 들을 게요. 그런데 변수가 뭐예요?"

"변수는 데이터를 저장하는 데 사용하는 특수한 개체거든. 어떤 데이터라도. 자바에서는 데이터를 모두 변수에 저장해. 변수를 이해하려면 상자를 생각해 봐."

"상자? 어떤 상자요?"

"그냥 낡은 상자 아무 거나. 숫자 13을 쓴 종이를 상자에 넣는다고 가정해 보자. 이제 그 상자에 값 13이 저장됐다고 말할 수 있어."

"자바에서 모든 변수는유형, 이름, 이라는 세 가지 중요한 속성이 있지."

"좀 더 확실하게 설명해 줄래요?"

"그럴게. 이름은 변수들을 서로 구별하려고 사용하지. 상자에 붙이는 라벨처럼."

"변수 유형은 변수에 저장할 수 있는 값이나 데이터의 유형을 결정하고. 이를테면 모자 상자에는 모자를 넣고 신발 상자에는 신발을 넣는 것처럼."

"값은 변수에 저장된 특정 객체나 데이터, 혹은 정보인 거야."

"변수 유형을 좀 더 자세히 말해 줄 수 있나요?"

"그럴게. 자바에서 객체는 특정한 유형에 속해. 예를 들면 정수, 분수, 텍스트, 고양이, 집 등등."

"변수도 마찬가지야. 유형이 같은 것끼리만 값을 저장할 수 있어."

"실생활에서도 알 수 있지. 모자 상자나 신발 상자처럼 다른 종류의 상자들은 서로 다른 것을 저장하는 데 사용하잖아."

엘리, 변수, 데이터 유형 - 2

"변수를 생성(또는 선언)하려면 다음과 같이 유형의 이름을 사용해야 해. TypeName variableName."

"몇 가지 예를 들어 볼게. "

변수를 선언하려면
유형, 그리고 이름 순으로
설명
1
int a;
a라는 이름의 정수(int) 변수를 생성합니다.
2
String s;
s라는 이름의 문자열(String) 변수를 생성합니다.
3
double c;
c라는 이름의 실수(double) 변수를 생성합니다.

"가장 일반적인 두 가지 유형이 정수(단어 int를 사용하여 선언)와 텍스트(단어 String을 사용하여 선언)입니다."

"double은 뭔가요?"

"소수 또는 실수를 Doubles라고 해."

"변수에 유형, 이름, 값의 세 가지 속성이 있다고 하셨지만, 저는 두 가지 속성만 알겠어요. 변수에는 어떻게 값을 지정하죠?"

"그러면 상자 이야기로 돌아가서, 42번을 쓴 종이를 상자에 넣는다면 이제 그 상자에는 42라는 값이 저장된 거야."

"그래요."

"특수(지정) 연산자를 사용하여 변수에 값을 지정하는데, 여기서 지정이란 변수에서 다른 변수로 값을 복사한다고 봐야 해. 값을 옮기는 게 아니라 값을 복사하는 거야. 디스크에 있는 파일처럼. 이렇게 보여."

코드 설명
1
i = 3;
변수 i에 값 3을 지정합니다.
2
a = 1;
b = a+1;
변수 a에 값 1을 지정합니다.
변수 b에 값 2를 지정합니다.
3
x = 3;
x = x + 1;
변수 x에 값 3을 지정합니다.
다음 줄에서 x의 값이 1 증가하여 x는 4가 됩니다.

"지정 연산을 수행하려면 등호 (=)를 사용해야 해."

"다시 한 번 말할게. 이 연산은 비교하는 게 아니라 등호 오른쪽에 있는 값을 왼쪽 변수에 복사하는 거다. 비교하려면 자바에서는 이중 등호 (==)를 사용한다."

"저는 고양이를 변수에 넣는 방법을 알아요. 그건 프로그램과 비슷해요."

"고양이를 가두는 방법:

1. 빈 상자를 가져온다.

2. 잠깐만."

엘리, 변수, 데이터 유형 - 3

"아냐, 아미고. 상자에 고양이를 한 마리만 집어 넣을 수 있어. 음, 변수에 값을 하나만 지정할 수 있다는 뜻이야.

"그렇군요. 변수를 만드는 예를 좀 더 들어 주시겠습니까?"

"알았어. 한번 더 말할 게. 변수를 생성(또는 선언)하려면 이름«TypeName variableName»을 사용해야 해."

코드 설명
1
String s;
s라는 이름의 String 변수가 생성됩니다.
이 변수는 텍스트를 저장할 수 있습니다.
2
int x;
x라는 이름의 int 변수가 생성됩니다.
이 변수는 정수를 저장할 수 있습니다.
3
int a, b, c;
int d;
a, b, c, d라는 이름의 int 변수가 생성됩니다.
이 변수들은 정수를 저장할 수 있습니다.

"아, 이제 알겠어요!"

"명심해. 같은 메소드 내에서 동일한 이름의 두 변수를 생성할 수 없어."

"다른 메소드 내에서는 요?"

"그건 가능해. 각각 다른 집에 상자를 두는 것과 마찬가지야."

"좋아하는 것 아무 거나 변수의 이름으로 쓸 수 있을까요?"

"거의 다 가능해. 변수 이름에는 공백 문자, +, - 따위를 포함해선 안 돼. 변수의 이름에는 그냥 글자와 숫자를 사용하는 것이 가장 좋아."

"자바에서는 대소 문자를 구별한다는 걸 명심해. int aInt a는 달라."

"그런데 자바에서는 변수가 생성됨과 동시에 값을 지정할 수 있어. 이렇게 하면 시간과 공간을 모두 절약할 수 있지."

간편 코드 동등하지만 긴 코드
1
int a = 5;
int b = 6;
int a;
a = 5;
int b;
b = 6;
2
int c = 7;
int d = c+1;
int c;
c = 7;
int d;
d = c+1;
3
String s = "I'm Amigo";
String s;
s = "I'm Amigo";

"그 방식이 훨씬 더 간편하고 명료해요."

"그게 우리가 교육하는 방식이지."

"자바 초보자들은 int (정수)String (텍스트 또는 문자열)형에 익숙해져야 해."

"int형은 변수에 숫자를 저장하여 덧셈, 뺄셈, 곱셈, 나눗셈 등의 연산을 수행할 수 있지."

코드 설명
1
int x = 1;
int y = x*2;
int z = 5*y*y + 2*y + 3;
x는 1
y는 2
z는 20+4+3이니까 27이 됩니다.
2
int a = 5;
int b = 1;
int c = (a-b) * (a+b);
a는 5
b는 1
c는 4*6이니까 24가 됩니다.
3
int a = 64;
int b = a/8;
int c = b/4;
int d = c*3;
a는 64
b는 8
c는 2
d는 6

"알았습니다. 프로그래밍은 늘 이렇게 쉬운가요?"

"실제로 그래."

"좋아라! 그래, 다음은 뭘 배우나요?"

"String형은 '스트링 또는 문자열'로도 알려진 텍스트 줄을 저장하지."

"자바에서 문자열을 할당하려면 텍스트를 따옴표 안에 두어야 해. 몇 가지 예를 들어 볼게."

코드 설명
1
String s = "Amigo";
s에는 "Amigo"가 들어 있습니다.
2
String s = "123";
s에는 "123"이 들어 있습니다.
3
String s = "123 + 456";
s에는 "123 + 456"이 들어 있습니다.

"알았습니다. 별로 어려워 보이지 않네요."

"여기 재미있는 사실이 하나 더 있어."

"문자열은 더하기 기호(+)로 연결할 수 있지. 예를 들어 볼게."

코드 설명
1
String s = "Amigo" + " is the best";
s에는 "Amigo is the best"가 들어 있습니다.
2
String s = "";
s에는 기호가 전혀 없는 빈 문자열이 들어 있습니다.
3
int x = 333;
String s = "Amigo" + x;
s에는 "Amigo333"이 들어 있습니다.

"그렇다면 숫자에 문자열을 더할 수 있어요?"

"그래, 하지만 문자열과 숫자를 더하면 결과는 항상 문자열이 된다는 걸 명심해."

"그건 예제에서 알 수 있었어요."

"그렇게 똑똑하면, 화면에 변수를 표시하는 방법을 알아보지."

"흠. 변수요? 화면에? 전혀 모르겠는데요."

"사실 간단해. 화면에 뭔가를 출력하려면, 우리는 System.out.println() 명령을 사용해서 출력하려는 것이 무엇이든 인수로 전달하지."

코드 화면 출력
1
System.out.println("Amigo");
아미고
2
System.out.println("Ami"+"go");
아미고
3
String s = "Amigo";
System.out.println(s);
아미고
4
String s = "Am";
System.out.println(s+"igo");
아미고

"하하! 그렇게 하니까 모든 게 훨씬 더 분명한데요."

"잘됐네. 여기 있는 연습 문제 세 개를 풀어 봐."