3번째 시간으로, Hello world 클래스를 만들어보았다.
만약에 아래와 같은 코드를 짰다고 하자,
public class HelloWorld {
public static void main(String [] args){
System.out.println("HelloWorld!!!");
}
}
첫 번째 줄
public class HelloWorld { }
뒤에서부터 살펴보면,
HelloWorld
우선 HelloWorld 라는 단어는 우리가 정한 이름이다. 이 프로그램이 Hello, World!를 출력하는 프로그램이기 때문에 HelloWorld라고 지어준 것. 다른 이름을 사용해도 된다.
class
클래스(class)는 객체 지향 프로그래밍의 기본 단위라고 할 수 있다. 이후 '객체 만들기' 챕터에서 자세하게 배울텐데, 우선 지금은 기본 단위라고 생각하시면 된다. class HelloWorld 라고 썼으니, HelloWorld라는 이름의 클래스를 만든다는 말이다.
public
public은 '공적인' 이라는 뜻으로 HelloWorld라는 클래스는 누구나 사용할 수 있는 공적인 클래스라는 의미이다. 이를 접근제어자 라고 부르는데, public 외에도 private, protected 등이 있다.
public class HelloWorld
즉 첫 줄은 'HelloWorld라는 이름의 공개된 클래스를 만든다'는 이야기
두 번째 줄
public static void main(String[] args) { }
두 번째 줄은 HelloWorld {} 괄호 안에, 즉 HelloWorld 클래스 안에 위치하고 있다. 클래스 안에는 클래스가 어떤 동작을 할 지 정의해 주는데, 이 부분을 메소드라고 부른다.
첫 번째 줄이 클래스를 만드는 코드였다면, 두 번째 줄은 메소드를 만드는 코드입니다. 총 6개의 단어가 보이네요. 짧게 살펴봅시다.
main
먼저 살펴볼 단어는 가운데에 있는 main다. 메소드의 이름으로 사용되고 있다. main이라는 이름은 좀 특별한데, 자바 프로그램을 실행하면 가장 먼저 main을 찾아서 실행시키게 된다. 그렇기 때문에 main이라는 단어는 모든 자바 프로그램에 항상 포함되어 있다. (이름을 바꾸면 안 되겠죠?) 우리가 실행시키고 싶은 자바 코드가 있다면, main 안에 넣어주면 된다.
이제 main 앞에 나오는 3개의 단어를 살펴봅시다. 이 3개의 단어는 main 메소드의 특징을 설명해주는 말로, 항상 main과 함께 나오게 된다.
public
앞서도 살펴본 public 이다. main 메소드는 누구에게나 공개되어 있다는 의미
static
static도 이후에 더 자세히 살펴볼텐데, static을 써주면 그 부분을 바로 실행 가능하게 만들어 준다. main은 가장 첫 번째로 실행되어야 하기 때문에, main 앞에는 항상 static을 붙이게 됩니다.
void
메소드는 필요에 따라 실행이 끝나고 어떤 값을 되돌려주기도 한다. 그리고 그 되돌려줄 값이 무엇인지 미리 메소드 이름 앞에 써준다. void는 되돌려주는 값이 없다는 의미, 만약 실행이 끝나고 숫자형을 돌려줄 예정이면, void 대신 숫자를 의미하는 int를 쓰면 된다. 메인 메소드는 보통 아무 것도 되돌려주지 않기 때문에 void를 붙여주게 된다.
이제 main 뒤에 나오는, 괄호 안의 단어 2개를 살펴봅시다.
String[] args
이 두 단어는 같이 보는 게 좋습니다.
String[] args는 괄호 ( ) 안에 위치하고 있죠? 괄호 안에 있다는 것은 메소드에 전달되는 값이라는 의미입니다. 파라미터라고도 하죠. 앞에 있는 String[]은 문자열을 의미하고, 뒤에 있는 args는 변수 이름입니다. 즉, args라는 이름의 문자열 변수가 메소드에 전달된다는 뜻입니다.
지금 괄호 ( ) 의 주인은 main 메소드니까, 누군가 main 메소드에게 파라미터를 전달해주면, main 메소드 안에서 args라는 이름으로 받아서 사용할 수 있습니다.
public static void main(String[] args) { }
- main 메소드가 있습니다.
- 이 main 메소드는 누구나 접근할 수 있고 (public), 바로 실행할 수 있고 (static), 아무 것도 되돌려주지 않습니다. (void)
- 나중에 main 메소드에 전달해주고 싶은 값이 있다면, 문자열 형태로 전달해야 하며, main 메소드 안에서 'args' 라는 이름으로 사용할 수 있습니다.
세 번째 줄
System.out.println("Hello, World!");
main 메소드 안에는 가장 먼저 실행하고 싶은 코드를 넣는다고 했죠? 우리는 Hello, World!라고 출력하고 싶기 때문에, 출력을 해주는 코드가 안에 들어 있습니다.
하나씩 살펴봅시다.
System
객체 지향의 기본 단위가 클래스라고 했죠? System도 클래스입니다. 다만, 자바에서 미리 직접 만들어둔 클래스입니다. 우리는 이렇게 미리 만들어진 클래스를 활용해서 어려운 동작을 코드 한 줄로 만들 수 있습니다. System 클래스는 말 그대로 입력, 출력 등 시스템에 관련된 기능들을 모아둔 클래스입니다.
out
System 클래스 안에는 여러 기능이 모여 있기 때문에, 이해하기 쉽게 System.in, System.out, System.err 등으로 분리되어 있습니다. out이라는 이름을 보니, 출력과 관련된 기능이 들어 있겠죠?
println()
print는 '출력하다' 라는 뜻이고, ln은 line의 줄임말입니다. 괄호 안에 원하는 텍스트를 넣으면 출력해주고, 마지막에는 엔터를 치듯이 다음 줄(line)로 넘겨주는 역할을 합니다. println 역시 기능을 구현한 부분이기 때문에 메소드라고 부릅니다.
"Hello, World!"
두 개의 따옴표 (" ")는 문자열을 의미합니다. 괄호 안에 넣으면 메소드에 전달해준다고 했었죠? Hello, World!라는 문자열을 출력하기 위해 println 메소드에 전달해주고 있습니다.
정리해 봅시다.
System.out.println("Hello, World!");
이 줄은 'System'이라는 자바에 내장되어 있는 클래스의 'out' 안에 있는 'println' 메소드를 사용해서, Hello, World!를 출력하라는 뜻입니다.
결과
이 코드를 통해 우리는 드디어 다음과 같은 결과를 얻을 수 있습니다.
Hello, World!
'Programming > Java' 카테고리의 다른 글
자바 기초부터 ABC (6) - 연산자 (0) | 2021.11.13 |
---|---|
자바 기초부터 ABC (5) - 자료형 (0) | 2021.11.12 |
자바 기초부터 ABC (4) - 변수 (0) | 2021.11.12 |
자바 기초부터 ABC (2) -자바와 객체지향 (0) | 2021.11.12 |
자바 기초부터 ABC (1) - 자바란? (0) | 2021.11.12 |