앞의 Hello World 예시에서 봤듯, 자바는 다양한 문법적 요소들로 구성되어 있다. 여기서는 자바를 구성하고 있는 요소들을 하나하나 알아보자.
자바를 해부한다면?
자바를 해부한다면 자바를 구성하고 있는 요소는 다음과 같은 8개일 것이다.
- 주석 (Comments)
- 예약어 (Reserved Words)
- 제어자 (Modifiers)
- 문 (Statements)
- 블록 (Blocks)
- 클래스 (Classes)
- 매소드 (Methods)
- 메인 매소드 (The Main Method)
각각의 요소들은 자바를 구성하는 매우 중요한 요소들이다. 이 8가지의 요소들이 합쳐져 자바 프로그램을 만든다. 하나하나 알아보자.
주석 (Comments)
주석은 컴파일러가 없는 취급을 하는 문장들이다. 주석은 주로 코드가 뭘 하는지 설명하기 위해 존재한다. 주석이 중요한 이유는 프로그램이 커지고 복잡해 짐에 따라 프로그래머들이 서로서로가 짠 코드를 이해할 수 없는 상황이 발생하기 때문이다. 복잡한 코드가 시작되기 전에 주석으로 이 코드가 뭘 하고 있는지 설명해 준다면 오류를 고칠 때에도 편하고, 한 사람이 짜던 코드를 다른 사람이 쉽게 이어서 짤 수 있다.
주석은 2가지 방법으로 나타낸다. 첫 번째 방법은 //를 쓰면 // 위로 나오는 문장 전체가 주석처리된다. 아래의 코드는 "Hello World를 프린트하는 매인 매소드"를 주석 처리했다.
public class Ex {
//Hello World를 프린트하는 매인 매소드
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
//를 써서 주석 처리하면, 한 문장 이상의 긴 문장을 주석 처리할 수가 없다. 그럴 땐 /*와 */를 써서 주석 처리한다. /*와 */는, 그 사이에 있는 모든 문장을 주석 처리한다.
public class EX {
/* 여러 문장에 걸친 주석처리의 예시를
보여드리겠습니다. */
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
예약어 (Reserved Words)
예약어는 컴파일러에게 특별한 의미를 갖는 단어들이다. 예약어는 정해진 의미 외에는 쓸 수 없고, 정해진 사용법이 있다. 다음과 같은 Hello World 프로그램에서 예약어를 다 찾아보면,
public class Ex {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
public, class, static, void 등이 있다. 보통 코딩을 하기 위해선 IDE(Integrated Development Envirment, 쉽게 말해 코딩을 쉽게 해주는 프로그램이라 생각하면 된다)를 사용하는데, IDE에서는 보통 예약어를 예쁜 색깔로 칠해서 한 번에 알 수 있게 해 준다.
그밖에도 자바 공식 홈페이지에 나와 있는 예약어를 일부 나열하자면,
abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, true, try, void, volatile, while
등이 있다. 그리고 놀랍게도, 여러분들이 자바 시리즈를 모두 공부한다면 몇 개를 빼고 위에 있는 모든 예약어가 어떤 뜻인지 알게 될 것이다! 그리고 예약하는 보통 모든 프로그래밍 언어에서 비슷하기 때문에 한 번 익혀 놓으면 다른 프로그래밍 언어를 배울 때 편하다.
제어자 (Modifiers)
자바에서는 특정한 예약어를 써서 데이터나 클래스, 매소드 등의 특성을 나타낸다. 여기서 말하는 특성이란 이 데이터를 모두가 볼 수 있는지(public), 일부만 볼 수 있는지(private) 등을 설정하는 것이다.
아래와 같은 코드를 보자.
public class Ex {
public int data1;
private int data2;
}
여기서는 데이터 2개를 선언하고, 하나는 public, 하나는 private로 선언했다. public으로 선언한 변수는, 다른 클래스도 볼 수 있다. 그에 반해 private로 선언한 변수는 다른 클래스가 볼 수 없다. 이런 식으로 데이터를 제어하는 것을 제어 자라고 하고 제어자에 할당된 예약어는 다음과 같다.
public, static, private, final, abstract, protected
문 (Statement)
프로그램에서 동작을 나타내는 것을 문이라고 한다. 예를 들어,
System.out.println("Hello, world!");
가 하나의 문으로 이루어져 있다. 모든 문은 세미콜론(;)으로 끝난다.
블록 (Blocks)
{ 와 } 사이를 블록이라고 한다. 앞의 프로그램에서,
public class Ex {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
첫 번째 블록은
public static void main(String[] args) {
System.out.println("Hello, world!");
}
이고, 두 번째 블록은
System.out.println("Hello, world!");
이다.
블록은 크게 2가지 스타일로 쓸 수 있다. 어떤 스타일이 나은지는 프로그래밍 계의 민트 초코 논쟁 같이 양쪽이 매우 팽팽하게 맞서고 있다.
End-of-line 스타일
End-of-line은 말 그대로 코드의 끝에 블록을 쓰는 것이다. 나는 End-of-line을 선호해 여태까지의 모든 코드를 End-of-line 스타일로 적었다.
public class Ex {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
위에서 볼 수 있듯이, Ex 뒤에 바로 {를 썼고, main(String[] args) 뒤에 바로 {를 썼다.
Next-line 스타일
Next-line 스타일은 코드 다음 줄에 {를 쓰는 것이다. 같은 프로그램을 Next-line 스타일로 쓰면 다음과 같다.
public class Ex
{
public static void main(String[] args)
{
System.out.println("Hello, world!");
}
}
클래스 (Class)
클래스는 객체지향에서 객체의 설계도 역할을 하는 프로그램의 단위이다. 자세한 건 객체지향을 다룰때 알아보자.
매소드 (Method)
매소드는 클래스 안에 있는 함수이다. 함수는 똑같은 코드를 조금씩 바꿔서 재사용하거나, 코드의 가독성을 높이기 위해 문들을 모아놓은 단위이다. 자세한건 함수를 다룰 때와 객체지향을 다룰때 알아보자.
메인 매소드 (Main Method)
매인 매소드는 매소드 중에서도 프로그램을 실행할 때 실제로 실행되는 매소드다. 객체지향을 다룰 때 자세히 알아보자.
혹시 모르는 점이나 더 궁금한 점, 지적할 점이 있으면 언제든지 댓글 남겨주세요. 늦어도 24시간 이내에 답변드립니다
'👨💻 프로그래밍 > Java, Kotlin, Spring' 카테고리의 다른 글
자바 5 - 자바 상수 (0) | 2021.04.10 |
---|---|
자바 4 - 자바 변수, 데이터 타입 (1) | 2021.04.08 |
자바 3 - 프로그래밍 에러의 종류 (0) | 2021.04.06 |
자바 1 - Hello, World! (0) | 2021.04.02 |
자바 0 - 코딩이란 뭘까? (1) | 2021.03.31 |