엘리, 변수, 데이터 유형 - 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");
아미고

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

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

2
과제
자바 구문,  레벨 0레슨 4
잠금
칭찬은 교사도 춤추게 한다
비법 CodeGym 센터의 교사는 모두 일류입니다. 초급(레벨 0) 학생들도 아는 이런 사실을 실제로 표현하는 학생들은 거의 없습니다. 하지만 칭찬은 고래도 춤추게 합니다, 그쵸? 프로그래밍을 가르치는 사람한테는 프로그램으로 최고의 찬사를 전할 수 있습니다. 게다가 프로그램이 정확한 문구를 출력한다면 값을 매길 수 없는 선물이겠군요! 찬사를 보내는 프로그램을 작성해 봅시다.
2
과제
자바 구문,  레벨 0레슨 4
잠금
내 어린 친구
3126년도에서는 누구나 System.out.println()에 관해 알고 있고, 또 이 명령을 자주 사용합니다. 이 명령으로 프로그램을 작성하는 방법을 배우는 CodeGym 학생들 뿐만이 아닙니다. 어린 친구들조차도 사용합니다. 내 친구의 실제 출생 년도를 출력하는 프로그램을 작성해 봅시다. 그 친구는 8년 전에 출생했습니다.
1
과제
자바 구문,  레벨 0레슨 4
잠금
변수 선언
자바에서 변수를 바로 사용할 수 없습니다. 누구도 이해할 수 없을 테니까요. 컴파일러가 이해 못하면 시달리게 될 걸요. 알게 될 것입니다! 그러니 변수로 뭔가 하려면 프로그래머의 의도를 공표해야 합니다! int 변수와 String 변수를 선언하는 프로그램을 작성해 보십시오.