본문 바로가기

Java

(47)
[Java] 07.03 - 자바의 이름 규칙(Naming Rule) 들어가며 이번에는 자바 프로그램을 작성하면서 일반적으로 적용하는 '명명 규칙'을 소개하고자 한다. 지금 소개하는 보편적인 규칙을 따르면 자신이 만든 코드를 다른 이들에게 보여줄 때에도, 반대로 다른 이들의 코드를 볼 때에도 도움이 된다. 클래스의 이름 규칙 클래스의 이름을 지을 때 가장 보편적으로 선택하는 이름 규칙을 가리켜 'Camel Case Model'이라 한다. 그리고 이 모델의 기본 규칙은 다음과 같다. 클래스 이름의 첫 문자는 대문자로 시작한다. 둘 이상의 단어가 묶여서 하나의 이름을 이룰 때, 새로 시작하는 단어는 대문자로 한다. 예를 들어서 Circle이라는 단어와 Point라는 단어를 묶어서 Camel Case 모델로 클래스의 이름을 정의하면 CirclePoint가 된다. Circle +..
[Java] 07.02 - 생성자(Constructor)와 String 클래스의 소개 들어가며 지금까지 BankAccount 클래스의 정의를 통해서 클래스에 대한 여러 가지를 이해하고 관찰하였다. 그러나 이 클래스에는 몇 가지 문제가 있다. 그중 하나는 인스턴스를 생성하는 과정에서 적절한 초기화를 진행하지 못했다는 점이다. String 클래스에 대한 첫 소개 다음 이야기의 전개를 위해 문자열 처리에 대한 기술 몇 가지를 소개하고자 한다. 문자열은 큰따옴표로 묶어서 표현함을 이미 알고 있다. 그런데 이러한 문자열은 다음과 같이 참조변수를 선언해서 참조할 수도 있다. String myJava = "Java"; // String형 참조변수의 문자열 참조 위의 상황은 참조변수 myJava가 문자열 "Java"를 가리키는 상황이다. 지금은 이정도의 이해면 충분하다. 사실 String은 자바에서 제..
[Java] 07.01 - 클래스의 정의와 인스턴스 생성 들어가며 클래스에 대한 지나치게 학문적인 접근은 오히려 처음 객체지향 언어를 공부하는 학습자에게 부담이 될 수 있다. 따라서 쉬운 접근을 통해서 클래스에 대한 첫 이해를 돕고자 한다. 클래스(Class) = 데이터(Data) + 메소드(Method) 작성된 프로그램의 코드를 관찰해보면 종류에 상관없이 모든 프로그램은 다음 2가지로 이뤄진다는 사실을 알 수 있다. 데이터 프로그램상에서 유지하고 관리해야 할 데이터 기능 데이터를 처리하고 조작하는 기능 이 중에서 데이터는 '변수의 선언'을 통해 유지 및 관리가 되고, 또 변수에 저장된 데이터는 '메소드의 호출'을 통해 처리가 된다. 이와 관련해서 다음 예제를 보자. 참고로 이 예제는 은행 계좌를 간단히 표현한 것이다. public class temp { st..
[Java] 06.03 - 메소드의 재귀 호출 들어가며 자바는 메소드의 '재귀적 호출'을 지원한다. 따라서 이에 대해 설명할 텐데, 이 내용이 부담된다면 본서를 조금 더 공부하다가 접근을 해도 괜찮다. 메소드의 재귀적 호출은 자료구조와 알고리즘의 구현에 유용한 문법이므로 조금 천천히 이해해도 괜찮다. 수학적 측면에서의 재귀적인 사고 재귀함수와 관련해서는 귀찮으니 나중에 다루겠다.
[Java] 06.02 - 변수의 스코프 들어가며 변수의 스코프(scope)란 임의의 변수에 대한 '변수의 접근 가능 영역' 또는 '변수가 소멸되지 않고 존재할 수 있는 영역'을 의미한다. 가시성(visibility) 지금까지 중괄호가 사용되었던 때를 정리해 보면 다음과 같다. if문 또는 if ~ else문에서 사용되었다. 다양한 반복문과 switch문에서 사용되었다. 메소드의 몸체 부분을 감싸는 용도로 사용되었다. 이처럼 중괄호는 다양한 경우에 사용된다. 그런데 이렇듯 중괄호로 특정 영역을 감싸면, 해당 영역은 변수에 관한 별도의 스코프를 형성하게 된다. 예를 들어서 다음과 같이 중괄호 내에 변수 num이 선언되면, if (...) { int num = 5; . . . } 이 변수 num은 중괄호 내에서만 접근이 가능하며, 중괄호를 벗어나는..
[Java] 06.01 - 메소드에 대한 이해와 메소드의 정의 들어가며 지금까지 예제를 작성할 때마다 main이라는 이름의 메소드 내에 실행할 내용을 담아 두었다. 이러한 main 메소드의 실행 원리만 이해하더라도 메소드의 기본 성질을 파악할 수 있다. 따라서 main에 대한 관찰에서 부터 이야기를 시작하고자 한다. main 메소드에 대해서 우리가 아는것과 모르는 것 앞서 main이 메소드이고, 이 메소드는 클래스의 내부에 존재해야 함을 간단히 보였다. 따라서 다음 메소드를 보면서 우리가 아는 것과 모르는 것들을 정리해 보겠다. public class temp { public static void main(String[] args) { int num1 = 5; int num2 = 7; System.out.println("5 + 7 = " + (num1+num2));..
[Java] 05.05 - 반복문의 중첩 들어가며 이번에는 반복문 관련하여 응용을 해보려고 한다. 우리는 이미 '하나의 문장 안에 다른 문장을 삽입할 수 있음'을 알고 있다. 예를 들면 for문 안에 if문을 삽입하는 경우이다. 마찬가지로 for문 안에 while문도, do ~ while문도 그리고 for문도 삽입할 수 있다. 이처럼 하나의 반복문 안에 다른 반복문이 삽입된 경우를 가리켜 '반복문의 중첩'이라고 한다. 생각해 볼 수 있는 중첩의 종류는? 반복문의 종류가 3가지 이니, 도출되는 경우의 수는 9가지 형태다. for + for for + while for + do ~ while while + for while + while whlie + do ~ while do ~ while + for do ~ while + while do ~ wh..
[Java] 05.04 - break & continue 들어가며 break와 continue는 실행 흐름의 조절을 목적으로 반복문 내에 삽입되는 키워드이다. 따라서 이 둘을 적절히 활용하면 다양한 흐름을 보이는 반복문을 구성할 수 있다. break문 break문은 앞서 switch문을 빠져나가는 용도로 소개한 바 있는데, 마찬가지로 반복문을 빠져나가는 용도로 사용된다. 보통은 if문ㅇ과 함께 사용되어 특정 조건이 만족 될 때, 이를 감싸는 반복문을 빠져 나가도록 구성이 된다. 이와 관련하여 다음 예제를 보자. public class temp { public static void main(String[] args){ int num = 1; boolean search = false; while (num < 100){ if (((num % 5) == 0) && (..
[Java] 05.03 - for, while 그리고 do ~ while 들어가며 앞서 소개한 컨트롤 문장들은 조건에 따른 코드의 '선택적 실행'을 위한 것들이다. 그러나 지금부터 소개하는 컨트롤 문장들은 조건에 따른 코드의 '반복 적 실행'을 위한 것들이다. 반복문 - while while문의 동작 방식을 이해하는 것은 if문을 이해하는 것만큼이나 쉽다. 따라서 간단한 예제와 그 실행 결과를 통해서 관찰할 수 있는 기회를 먼저 제공하겠다. public class temp { public static void main(String[] args){ int num = 0; while (num < 5){ System.out.print(num + " "); num++; } } } /* 실행 결과 0 1 2 3 4 */ 실행 결과를 관찰해보면 while문 안에 위치한 두 문장이 총 5..
[Java] 05.02 - switch와 break 들어가며 이어서 소개하는 switch문도 조건에 따라 실행할 문장을 구분한다는 측면에서 if ~ else if ~ else 문과 유사하다. 실제로 이 문장을 대체하는 용도로 사용이 된다. 특히 중간에 else if가 많이 들어가는 상황에서는 switch문이 더 좋은 선택이 될 수 있다. switch문의 기본 구성 다음 그림은 switch문의 기본 구성을 보여준다. 이렇듯 switch문은 switch, case 그리고 default로 이뤄진다. 위 그림에 존재하는 키워드 case와 default를 가리켜 '레이블(Label)'이라 한다. 레이블이라고 하면 생소하게 느낄 수 있다. 그러나 다음과 같이 말하면 친근하게 느껴진다. '라벨(Label)' 다음 그림은 문구점에서 구입이 가능한 라벨(레이블)이다. 흔..
[Java] 05.01 - if 그리고 else 들어가며 특정 조건이 만족될 때에만 실행하고픈 문장이 있다면 if 키워드를 사용하면 된다. 그리고 2개의 문장 중 조건에 따라 하나만 실행하고 싶다면 거기에 else를 더 추가하면 된다. if 문과 if ~ else 문 if 문과 if ~ else 문이 제공하는 기능을 스스로 파악할 수 있도록 예제를 하나 제시하겠다. public class temp { public static void main(String[] args){ int n1 = 5; int n2 = 7; // if 문 if (n1 < n2){ System.out.println("n1 < n2 is true"); } // if ~ else 문 if (n1 == n2){ System.out.println("n1 == n2 is true"); } ..
[Java] 04.03 - 비트를 대상으로 하는 연산자들 들어가며 비트를 대상으로 하는 연산이라고 하면 언뜻 하드웨어 컨트롤을 떠올리기 쉽다. 그러나 일반 응용 프로그램의 개발에서도 비트를 대상으로 하는 연산이 많이 쓰인다. 비트 연산자의 이해 비트 연산자는 각각의 비트를 대상으로 연산을 진행하는 연산자이며, 피연산자는 반드시 정수이어야 한다. 실수를 대상으로 하는 비트 연산은 의미가 없기 때문에 자바는 이를 지원하지 않는다. 위의 표에 있는 연산자들을 이해하기에 앞서 비트 단위 연산이 의미하는 바를 이해할 필요가 있다. 이에 다음 예제를 통해서 비트 단위 연산의 의미를 설명하고자 한다. public class temp { public static void main(String[] args){ byte n1 = 13; byte n2 = 7; byte n3 = ..