Java/Java 기본

Java 프로그램의 구조

검정비니 2018. 6. 6. 23:49
728x90
반응형

Java 프로그램의 구조


1. 클래스 만들기


자바에서는 클래스를 만들고 그 안에 프로그램 코드를 작성한다. 다음은 Hello 클래스를 정의하는 소스이다.


public class Hello {

...

}


이 소스는 Hello라는 클래스를 정의한다. 클래스 선언 시 class 키워드를 사용하며, 그 뒤에 클래스 이름을 정의한다. public은 접근지정자(access specifier)라고 불리는 것으로자바의 예약어이며 다른 클래스에서 자유롭게 Hello 클래스를 참조할 수 있다는 의미이다.



2. main() 메소드


자바 프로그램은 main() 메소드만 가질 수 있다. main() 메소드는 반드시 public static void로 선언이 되어야 하며, 하나의 클래스는 오직 하나의 메인 메소드를 가질 수 있다.


public static void main(String[] args) {

...

}


여기서 public은 모든 클래스에서 이 메소드를 부를 수 있다는 의미이며, static은 이 메소드가 객체에 종속되지 않고, 클래스에 종속된다는 의미이다. 그리고 괄호 안의 String[] args는 커멘드 라인 매개변수 (command line argument)라는 것이다.


자바 프로그램을 실행할 때에는 터미널에서 "java" 키워드를 이용해서 클래스 파일을 실행시킨다.


i.e. java Hello


이 경우에는 Hello.class 파일을 실행시키는 것이다. 그런데 이때, 저 명령어 뒤에 추가로 매개변수를 넣을 수 있는데, 이를 command line argument라고 한다.


i.e. java Hello a b


이 경우에는 a라는 문자열과 b라는 문자열이 각각 String args[]에 구성 원소로 들어가게 된다.


command line argument의 추가적인 개념이나 사용법, 그리고 static과 non-static 등의 개념등은 추후에 자세히 설명하도록 하겠다.



3. 메소드


클래스에 속한 함수를 메소드라고 부른다. 다음 소스는 메소드 sum()을 정의하고 있다.


public int sum(int n, int m) {

return (n + m);

}


메소드의 첫줄을 보게 되면, public int sum (int n, int m) 을 볼 수 있을 것이다. 앞서 말했듯, public은 모든 클래스에서 이 메소드를 부를 수 있게 설정한다는 의미의 접근 지정자이다.


접근 지정자와 메소드의 이름 사이에는 int나 void등의 단어들이 등장하는데, 이를 리턴 타입 (return type) 이라고 부른다. void의 경우, 아무 것도 리턴하지 않는다는 뜻이다. 따라서, 리턴 타입이 void일 경우에는 따로 반환을 하지 않아도 된다. 하지만 위의 메소드처럼 리턴 타입이 존재하는 경우에는 그 타입에 맞는 값을 반환해줘야 하며, 이때 사용하는 키워드가 바로 return이다.


return 키워드 뒤에 있는 변수(혹은 값)의 타입이 리턴타입과 같지 않을 경우, 컴파일 단계에서 오류가 뜨면서 컴파일에 실패하게 된다.


참고로, 자바는 타입에 있어서 아주 민감한 언어이다. 실제로, 파이썬이나 자바스크립트의 경우, 변수를 선언할 때에 자바처럼 타입을 지정하지 않아도 되며, 변수의 값을 바꿀 때에도 타입에 신경을 쓰지 않아도 된다. 그러나, 이와 같은 자바의 특성은 자바의 강점 중 하나라고 할 수 있다.


응용프로그램 개발이나 데이터 분석등의 업무를 할 때에, 어떤 객체나 변수의 타입이 변하지 않아야 할 경우가 생기고는 하는데, 이럴때에 자바의 이러한 특성이 크게 도움이 되곤 한다.



4. 변수 선언


변수란 데이터를 저장하는 공간으로서 개발자가 이름을 붙이고 다음과 같이 선언한다.


int i = 20;

int s;

char a;


변수의 선언 시에, 먼저 변수의 타입명을 써주고, 그 후에 변수의 이름을 입력한다. 무조건적으로 해야하는 법규는 아니지만, 일반적으로 이 변수의 이름은 알파벳 소문자로 시작하게 만든다. 이는, 개발자들끼리의 암묵적인 약속이다. (필수적인 요소는 아니기에 꼭 그럴 필요는 없지만, 되도록이면 그렇게 하는 것이 가독성을 높이는 데에 도움이 된다.)


또한, 여러 단어로 구성이 되어 있는 경우, _를 사용하거나 두번째 단어부터 첫 글자를 대문자로 쓰는 방식이 일반적이다.


int resultOfSum;

int result_of_sum;


4-1. 자바에서의 식별자 명명 규칙


1) 하나 이상의 글자로 이루어져야 한다.

2) 첫 번째 글자는 문자이거나 $, 혹은 _ 이어야 한다.

3) 길이 제한이 없다.

4) 두 번째 이후의 글자에는 숫자도 사용 가능하다.

5) $나 _ 이외의 특수문자는 사용이 불가능하다.

6) 이미 존재하는 자바 키워드는 식별자로 사용이 불가능하다.

7) 상수의 값을 표현하는 단어 true, false, 그리고 null은 식별자로 사용이 불가능하다.



5. 메소드 호출


다음 문장은 메소드 sum을 호출하는 문장이다.


s = sum(2, 10);


앞서 정의한 sum 메소드는 2개의 정수형 매개 변수를 가지며, 그 두 매개 변수의 합을 반환하는 메소드이다. 따라서, 위의 문장을 해석해보면, 2와 10의 합을 반환한 후에, 그 반환값을 s라는 변수에 저장하는 것이다.


메소드의 호출은 위와 같이 함수의 이름과 괄호, 그리고 필요한 경우에는 매개 변수를 추가해주는 것으로 이루어진다.



6. 주석문


주석문은 프로그램의 실행에 영향을 미치지 않으며 개발자가 프로그램에 대한 설명이나 특이 사항 등을 자유롭게 덧붙일 때 사용한다. 자바에는 주석문을 만드는 두 가지 방법이 있다.


첫째, 여러줄의 주석문을 만드는 것으로 다음과 같이 /*과 */를 이용한다.


/*

 * 주석처리

 * 예제

 */


자바 컴파일러는 '/*' 을 만나면 '*/' 을 만날 때까지 그 사이의 내용은 모두 주석문으로 처리한다. 

'/*' 와 '*/' 사이에 적법한 자바 코드가 있어도 이들은 컴파일 되지 않는다.


둘째, 한줄 짜리의 주석문을 만드는 것이로 다음과 같이 '//'를 이용한다.


//main() 메소드에서 실행 시작

s = sum(1,10); // 메소드 호출


컴파일러는 '//' 을 만나면 그 자리에서부터 그 행이 끝날 때까지를 주석문으로 처리한다.



7. 문장


자바에서 모든 문장의 끝은 다음 예와 같이 ';' 으로 인식한다.


int i = 20;

b = '?';

s = sum(1, 10);

int j = 3;   int k = 4;

char c, d, e;


주석문의 끝에는 ';' 을 붙이지 않아도 정상적인 문장으로 인식된다.



8. 블록


블록으로 표시되는 문장도 있다. 아래 예와 같이 클래스 선언이나 메소드 선언 등은 블록으로 구성되는 문장이다. 이들은 ';' 으로 끝나지 않고 '{' 로 시작해서 '}' 로 끝난다.


public class Hello {


public static void main(String[] args) { }


class Hello2 {

...

}

}


반응형

'Java > Java 기본' 카테고리의 다른 글

타입 변환  (0) 2018.06.08
변수와 상수  (0) 2018.06.08
자바의 데이터 타입  (0) 2018.06.08
이름 붙이는 관습  (0) 2018.06.07
Java의 개념  (0) 2018.06.06