자바(java)를 시작하기 전 필수로 알아야 할 특징들
1. 객체 지향 프로그래밍

우리가 사용하는 계산기는 ‘1+3’이라는 수식을 넣으면 반드시 ‘4’ 라는 값을 도출합니다. 4를 내보내지 않으면 계산기가 제대로 동작하지 않았다는 것이겠죠.
이를 함수(function)라고 하고, 입력(Input)에 따른 출력(Output)이 반드시 출력되도록 작성하는 프로그래밍을 함수형 프로그래밍이라고 합니다.

자판기의 경우를 보면 함수의 상황과는 다르다는 것을 알 수 있습니다.
우리가 자판기에서 콜라를 뽑기 위해 500원을 넣고 버튼을 누르면, 자판기는 콜라를 뽑을 수도 있고, 뽑지 않을 수도 있습니다.
이에는 2가지 이유가 있습니다.
- 금액이 부족 : 콜라의 구매 가격이 1000원인데 500원을 넣은 경우 자판기는 콜라를 제공할 수 없습니다.
- 재고가 부족 : 콜라가 품절일 경우, 콜라 품목의 버튼에 ‘품절’이라는 LED가 활성화되어 자판기가 콜라를 제공할 수 없습니다.
구매할 금액이 부족하거나, 콜라의 재고가 부족한 것은 자판기의 상태(State)를 나타냅니다. 또한, 돈을 넣고 음료수를 뽑는 ‘구매’ 라는 행위를 통해 자판기의 상태가 달라질 수 있습니다.
이때 자판기를 객체(Object)라고 하고, 객체는 상태를 가지게 됩니다. 이 상태는 행위를 통해 변경될 수 있습니다. 이 객체를 사용하는 프로그래밍을 객체 지향 프로그래밍이라고 하고, 자바(java)는 클래스(class)를 이용한 객체 지향 프로그래밍 언어입니다.
2. 클래스

클래스 이름은 객체(Object)의 이름과 동일합니다. 즉 클래스는 상태를 가지고, 상태를 변화시킬 수 있는 행위를 포함하고 있습니다. 이 행위를 메서드(Method)라고 합니다.
클래스 내에 상태 없이 행위만 정의하면 이는 함수가 됩니다.

자바에서는 폴더와 같은 패키지(package)를 사용하는데, 패키지와 클래스를 구분하기 위해서 패키지는 소문자로, 클래스는 첫 글자를 무조건 대문자로 작성해야 합니다.
3. 메서드의 형태
메서드는 소괄호와 중괄호의 조합으로 찾을 수 있습니다.
public static void main(String[] args) { // 2. 메서드 (행위)
int n1 = 10;
System.out.println(n1);
}
소괄호에는 메서드가 필요한 자원을 표기하고, 중괄호 안에는 메서드가 어떻게 동작할 지를 설명합니다. 위의 코드에서는 메서드에서 n1 = 10이라는 정수를 하나 선언하고, 콘솔에 n1을 출력하도록 작성되어 있습니다.
4. java 파일 생성 및 동작 원리
package ex01;
public class Var01 { // 1. 클래스 이름 (오브젝트)
public static void main(String[] args) { // 2. 메서드 (행위)
int n1 = 10;
System.out.println(n1);
}
}
위 코드를 직접 실행시켜 java 파일의 생성 및 동작 원리를 살펴보겠습니다.

우리가 자바 언어로 코딩을 진행한 후 실행을 누르면,
- 컴파일(Compile)이 진행되며 jdk 내부의 javac 파일로 인해 작성한 파일이 클래스 파일(.class)로 생성됩니다.
- RAM에서 일부 공간을 임대하여, 클래스 파일을 로드하여 코드를 실행합니다.
이때, 클래스 파일을 로드하여 두 가지 과정을 거치는 데,
- static 찾기
- main 실행
이 과정이 직접 이루어지는 지 확인해보겠습니다.
1) 클래스 파일 생성 확인
인텔리J에서 정상적인 코드를 실행하면, 코드 작성기 왼쪽의 탐색기에 out이라는 폴더가 생성됩니다.
‘Open in Explorer’ 메뉴를 통해 이를 열어보면, 클래스 파일이 생성된 것을 확인할 수 있습니다.

2) static 찾기
메인 코드를 일부 변경하여, static을 없애면 어떤 현상이 발생하는 지 확인해보겠습니다.
package ex01;
public class Var01 { // 1. 클래스 이름 (오브젝트)
public void main(String[] args) { // 2. 메서드 (행위) << static 제거 상태
int n1 = 10;
System.out.println(n1);
}
}
코드를 실행하면, 다음 오류 메시지가 출력되며 실행이 정지됩니다.

이는 main 메서드가 static이 아니니, static으로 정의하라는 경고문이므로, static이 존재하지 않으면 코드가 정상 동작하지 않는다는 것을 확인할 수 있습니다.
3) main 실행
메인 코드를 일부 변경하여, main 함수명을 변경했을 때 어떤 현상이 발생하는 지 확인해보겠습니다.
package ex01;
public class Var01 { // 1. 클래스 이름 (오브젝트)
public static void main2(String[] args) { // 2. 메서드 (행위) << main 이름 변경
int n1 = 10;
System.out.println(n1);
}
}
코드를 실행하면, 다음 오류 메시지가 출력되며 실행이 정지됩니다.

이는 main 메서드를 찾을 수 없으니, main 메서드를 main 이름으로 정의하라는 경고문입니다. 따라서 main 함수가 존재하지 않아도 오류가 발생하는 것을 확인할 수 있습니다.
내용 정리
- 자바는 상태와 행위를 가지는 객체를 사용하는 객체 지향 프로그래밍 언어
- 클래스 이름은 오브젝트 이름과 같으며, 클래스 이름은 항상 대문자로 표기
- 소괄호와 중괄호가 같이 붙어있으면 메서드, 메서드는 상태를 변경
- 자바는 컴파일을 통해 클래스 파일을 생성하고, 클래스 파일을 로드하여 실행
- static 찾기
- main 실행
Share article