프로그래밍 관련
17편. 배열과 메서드, 다차원 배열
17편. 배열과 메서드, 다차원 배열
2012.08.13배열과 메서드 배열을 매개변수로 받는 메서드 이번에는 배열을 매개변수로 받는 메서드를 살펴보도록 하겠습니다. 배열을 매개변수로 받기 위해선 매개변수의 타입을 '요소타입[]'으로 둬야합니다. class ArrayExamples { public static void main(String[] args) { int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; System.out.println(sum(nums)); // 55 } static int sum(int[] array) { int total = 0; for (int i = 0; i < array.length; i++) { total += array[i]; } return total; } } 위의 코드를 살펴보시면 sum(..
16편. 배열(Array)
16편. 배열(Array)
2012.08.12들어가기 전에 배열에 대해서 알아보기 전에 배열이 왜 필요한지에 대해 먼저 알아보도록 하겠습니다. 이해를 돕기 위해서 가정을 하나 들겠습니다. 우리는 사과 박스 20개를 앞에 두고 각 박스에 있는 사과의 개수를 구한 다음 사과가 총 몇 개나 있는지 알아보고 싶습니다. 각 박스에 있는 사과의 개수를 변수로 나타낸 뒤 총 합을 구하려면 아래와 같을 것입니다. 벌써부터 정신이 아득해질 것 같습니다. 코드 작성을 넘어서 진정한 문서 타이핑이 아닐 수 없습니다. 만약 박스의 개수가 20개에 그치지 않고 100개라고 한다면 어떻게 할까요? 1000개는요? 아마 그날은 변수 선언으로 밤을 지새워야 할지도 모릅니다. 변수를 선언하는 더욱 효율적인 방법이 있으면 좋겠는데 말이죠. 몇 개가 되었든 간에 한꺼번에 선언할 수..
15편. 생성자(Constructor)
15편. 생성자(Constructor)
2012.08.11생성자(Constructor) 생성자는 특별한 종류의 메서드입니다. 우리가 new 키워드를 통해 객체를 생성할 때 자동으로 호출되며, 보통 필드의 값을 초기화하는 데 사용합니다. 언제든지 호출될 수 있는 메서드와는 다르게, 객체 생성 시 단 한 번만 호출되며 반환형 자체가 존재하지 않습니다. 그리고 생성자명은 항상 클래스명과 같아야 합니다. 여기서는 접근 제어자를 우선 public으로 뒀는데, 나중에 접근 제어자 편에서 이를 자세히 살펴볼 것입니다. [접근제어자] 생성자명(매개변수1, 매개변수2, ...) { // ... } new 연산자의 내부 동작 아래는 자바 바이트코드의 일부입니다. new 명령어를 사용해서 초기화되지 않은 객체 인스턴스를 먼저 생성합니다. 이 단계에서는 객체에 메모리가 할당되지만,..
13편. 객체와 클래스(Objects and Classes)
13편. 객체와 클래스(Objects and Classes)
2012.08.10이번에 배울 내용은 객체 지향 프로그래밍에서 가장 핵심이 되는 내용입니다. 객체 지향 프로그래밍은 보고 이해하는 것보다는 많은 경험을 쌓으면서 직접 필요성을 느끼는 게 중요합니다. 이해가 안되는 부분은 댓글로 달아주시면 그 부분을 게시글에 보충 설명하도록 하겠습니다. 객체(object) 클래스를 배우기 전에 객체(object)가 대충 무엇인지는 알아둘 필요가 있습니다. 여기서 object는 사전적 의미 그대로 '물건, 물체'를 의미합니다. 실생활에서 예를 들면, 나 또한 객체가 될 수 있고 그 주위에 있는 키보드, 마우스, 모니터, 책, 지갑, 달력 등 모든 것이 객체가 될 수 있습니다. 이해를 돕기 위해서 이 중 자동차를 골라 자세히 살펴보도록 하겠습니다. 먼저 자동차의 속성들을 살펴보면 색상, 크기,..
12편. 메서드(Method)
12편. 메서드(Method)
2012.08.09메서드(method) 메서드는 간단히 말하자면 어떤 작업을 수행하는 문장들을 묶어놓은 것이라고 할 수 있습니다. 우리는 이미 자바를 살펴보면서 이미 메서드를 본적이 있습니다. 그것은 바로 프로그램의 진입점(Entry Point)으로 프로그램에서 중요한 역할을 담당했던 main 메서드입니다. 이 문서에서는 직접 메서드를 정의하여 호출하는 방법에 대해서 알아보도록 하겠습니다. 메서드의 기본 구성을 살펴보면 아래와 같습니다. [제어자] 반환형 메서드명(매개변수1, 매개변수2, ...) { // ... } 뭔가 새로 보는 게 많아 보이지만 차근차근 살펴보도록 합시다. 우선 제어자(modifier)는 여기서 설명하지 않습니다. 제어자를 이해하려면 객체와 클래스를 이해해야 하므로 객체와 클래스 편과 접근 제어자 편..
11편. 반복문 (2)
11편. 반복문 (2)
2012.08.08for 지금 배울 for문도 앞서 배운 while문과 비슷합니다. 차이를 살펴보자면, while문은 반복에 사용되는 변수를 초기화하는 초기식, 빠져나올 조건을 결정하는 조건식, 빠져나오기 위해 반복에 사용되는 변수를 증가 또는 감소시키는 증감식이 흩어져 있습니다. for문은 초기식, 조건식, 증감식이 세미콜론을 구분으로 하여 모두 붙어있습니다. int i = 0; // 초기식 while (i < 5) { // 조건식 System.out.println(i); i++; // 증감식 } int i; for (i = 0; i < 5; i++) // 초기식; 조건식; 증감식 System.out.println(i); 보기에도 while문보다 for문이 훨씬 간결하죠? for문에서 반복에 사용될 변수는 초기식에서 선..
10편. 반복문 (1)
10편. 반복문 (1)
2012.07.31while 우리가 쓰고 있는 컴퓨터는 반복에 특화된 기계입니다. 사람이 어떤 일을 반복하는 데에는 많은 시간이 걸리지만, 컴퓨터는 엄청나게 빠른 속도로 무수히 많이 반복할 수 있습니다. 앞으로 우리가 배울 while, do~while, for문을 통해서 컴퓨터에게 무언가를 반복하라는 명령을 내릴 수 있습니다. 이 문서에서는 while문을 먼저 소개합니다. while문의 기본 구성은 아래와 같습니다. while (조건식) { // 조건이 참일 때 동안 실행되는 문장 } while문은 괄호 안의 조건식이 참일 때 동안 while문 안의 문장들을 반복해서 수행합니다. 이를 '루프(loop)를 돈다'고 표현하기도 합니다. 만약, 조건식이 거짓이 되면 반복문을 빠져나옵니다. 아래의 예제를 확인하여 while문의 ..
9편. 제어문 (2)
9편. 제어문 (2)
2012.07.30switch문 if~else문에서 여러 개의 조건문이 올 때 else if문으로 해결할 수도 있지만, 너무 많다 보면 코드가 산만해 보일 수도 있습니다. 이렇게 판단해야 할 조건문이 많을 경우에는 switch문을 사용합니다. switch문의 기본 구성은 아래와 같습니다. switch (표현식) { // = 변수 또는 연산식이 올 수 있음 case 값1: 문장; ... break; case 값2: 문장; ... break; ... case 값N: 문장; ... break; default: 문장; ... } switch문의 괄호 안에 쓰인 표현식의 값과 같은 case로 이동합니다. 여기서 표현식의 값은 char형, byte형, short형, int형, String형 중 하나만 올 수 있습니다(나중에 살펴보겠..
8편. 제어문 (1)
8편. 제어문 (1)
2012.07.30if문 오늘 배우게 될 if문은 조건문에 사용되는 유용한 키워드입니다. 어떤 조건을 만족시킬 때 어떠한 문장을 실행시키고 싶다면 바로 if문을 사용할 수 있습니다. 기본적으로 if문은 다음과 같은 기본 구성을 지닙니다. if (조건식) { // 조건식이 참일 경우 실행되는 문장 } 여기서 조건식에는 true이나 false를 반환하는 논리식이 쓰이고, if문 내부는 중괄호 { }를 사용하여 둘러쌉니다. 논리식에는 주로 관계 연산자나 논리 연산자가 사용되는데 이런 연산자가 기억이 나지 않으시면 이곳을 눌러 복습하시기 바랍니다. 이해를 돕기 위해서 이를 순서도(flowchart)로 나타내면 아래와 같을 것입니다. 다음의 예제를 통해 if문을 간단히 살펴보도록 하겠습니다. public class IfElseEx..
7편. 연산자 (2)
7편. 연산자 (2)
2012.07.25들어가기 앞서 단항, 이항, 삼항 연산자 단항 연산자(unary operator)란 하나의 피연산자를 갖는 연산자들을 말합니다. 단항 연산자에는 부호 연산자, 증감 연산자 등이 있습니다. 그럼 이항 연산자(binary operator)는 무엇일까요? 두 개의 피연산자를 갖는 연산자들을 말합니다. 이와 마찬가지로 삼항 연산자(ternary operator)는 세 개의 피연산자를 갖는 연산자들을 말합니다. 부호 연산자 단항 연산자로 쓰이기도 하는 + 연산자와 - 연산자는 피연산자의 부호를 유지하거나 변경하기도 합니다. 다음 예를 보시면 손쉽게 이해하실 수 있습니다. public class OperatorExamples { public static void main(String[] args) { int num..
6편. 연산자 (1)
6편. 연산자 (1)
2012.07.25들어가기 앞서 연산자(operator)는 +, -, /, * 등과 같이 연산에 사용되는 기호를 말합니다. 자바에는 아래의 표와 같이 단항, 산술, 시프트, 관계 등 매우 다양한 연산자가 있습니다. 아래의 연산자 표를 외울 필요 없이 자주 쓰다보면 손에 익습니다. 그냥 간단하게 보고 넘어가주세요. 연산자의 우선순위 여기서 우선순위가 눈에 띄는데, 우선순위는 연산식 내에 여러 개의 연산자가 사용됐을 경우에 무엇을 먼저 처리할 것인지, 무엇을 나중에 처리할 것인지를 결정합니다. 예를 들어서, '124 + 62 * 43 - 22'는 연산자 우선순위에 따라 아래와 같이 처리됩니다. 이번에는 연산식이 'score >= 80 && score < 90'일 때는 무엇이 먼저 처리될까요? 살펴보면 연산자 =은 관계 연산자..
5편. 주석
5편. 주석
2012.07.22주석(Comments) 주석이란, 자신이 작성한 코드를 다른 사람이 이해하기 쉽게 돕는 역할을 하며 수천 줄이 넘어가는 코드에서 자칫하면 자신이 무엇을 하는 코드를 작성했는지 가끔 깜빡할 때도 있어서 중간중간에 주석을 달기도 합니다. 주석은 코드에 영향을 미치지 않으며 컴파일 대상에서 제외됩니다. 즉, 주석 안에서 무엇을 쓰든 결과에 영향을 미치지 않습니다. 구현 주석(Implementation comments) 구현 주석은 그 코드에 관한 주석이나 머릿속에서 떠올린 다소 복잡한 여러 줄의 코드에 관해 보충 설명하고 싶을 때 사용합니다. 구현 주석에는 행 단위 주석과, 블록 단위 주석이 있습니다. 행(line) 단위 주석은 말그대로 한 줄씩 주석 처리가 가능하고, 블록(block) 단위 주석은 여러 줄을..