Java 기초: 기본 문법 마스터하기
Java 프로그램을 고려하면, 서로의 메서드를 호출하며 통신하는 객체들의 집합으로 정의할 수 있습니다. 이제 클래스, 객체, 메서드, 인스턴스 변수가 무엇을 의미하는지 간단히 살펴보겠습니다.
객체 - 객체는 상태와 행동을 가집니다. 예: 개는 색상, 이름, 품종 같은 상태와 꼬리 흔들기, 짖기, 먹기 같은 행동을 가집니다. 객체는 클래스의 인스턴스입니다.
클래스 - 클래스는 그 타입의 객체가 지원하는 행동/상태를 설명하는 템플릿/청사진으로 정의할 수 있습니다.
메서드 - 메서드는 기본적으로 행동입니다. 클래스는 여러 메서드를 포함할 수 있습니다. 로직이 작성되고, 데이터가 조작되며, 모든 행동이 실행되는 곳이 메서드입니다.
인스턴스 변수 - 각 객체는 고유한 인스턴스 변수 세트를 가집니다. 객체의 상태는 이 인스턴스 변수들에 할당된 값들에 의해 생성됩니다.
첫 Java 프로그램
Hello World라는 단어를 출력하는 간단한 코드를 살펴보겠습니다.
예제
Live Demo
public class MyFirstJavaProgram {
/* This is my first java program.
* This will print 'Hello World' as the output */
public static void main(String []args) {
System.out.println("Hello World"); // prints Hello World
}
}
파일 저장, 컴파일, 실행 방법을 살펴보겠습니다. 다음 단계를 따르세요:
메모장을 열고 위 코드를 추가합니다.
파일을 MyFirstJavaProgram.java로 저장합니다.
명령 프롬프트를 열고 클래스를 저장한 디렉토리로 이동합니다. C:\라고 가정합니다.
'javac MyFirstJavaProgram.java'를 입력하고 엔터를 눌러 코드를 컴파일합니다. 코드에 오류가 없다면 명령 프롬프트가 다음 줄로 넘어갑니다(경로 변수가 설정되었다고 가정).
이제 'java MyFirstJavaProgram'을 입력하여 프로그램을 실행합니다.
창에 'Hello World'가 출력되는 것을 볼 수 있습니다.
출력
C:\> javac MyFirstJavaProgram.java
C:\> java MyFirstJavaProgram
Hello World
기본 문법
Java 프로그램에 대해 다음 사항들을 명심하는 것이 매우 중요합니다.
대소문자 구분 - Java는 대소문자를 구분하므로 식별자 Hello와 hello는 Java에서 다른 의미입니다.
클래스 이름 - 모든 클래스 이름의 첫 글자는 대문자여야 합니다. 여러 단어로 클래스 이름을 만드는 경우 각 내부 단어의 첫 글자는 대문자여야 합니다.
예: class MyFirstJavaClass
메서드 이름 - 모든 메서드 이름은 소문자로 시작해야 합니다. 여러 단어로 메서드 이름을 만드는 경우 각 내부 단어의 첫 글자는 대문자여야 합니다.
예: public void myMethodName()
프로그램 파일 이름 - 프로그램 파일 이름은 클래스 이름과 정확히 일치해야 합니다.
파일 저장 시 클래스 이름을 사용하세요(Java는 대소문자 구분)하고 끝에 '.java'를 추가하세요(파일 이름과 클래스 이름이 일치하지 않으면 프로그램이 컴파일되지 않습니다).
하지만 public 클래스가 파일에 없는 경우 파일 이름이 클래스 이름과 다를 수 있습니다. 파일에 public 클래스가 있는 것은 필수가 아닙니다.
예: 'MyFirstJavaProgram'이 클래스 이름이라면 파일은 'MyFirstJavaProgram.java'로 저장해야 합니다.
public static void main(String args[]) - Java 프로그램 처리는 모든 Java 프로그램의 필수 부분인 main() 메서드에서 시작됩니다.
Java 식별자
모든 Java 구성요소에는 이름이 필요합니다. 클래스, 변수, 메서드에 사용되는 이름을 식별자라고 합니다.
Java에서 식별자에 대해 기억해야 할 몇 가지 사항:
모든 식별자는 문자(A-Z 또는 a-z), 통화 문자($) 또는 밑줄(_)로 시작해야 합니다.
첫 문자 이후에는 문자의 모든 조합이 올 수 있습니다.
키워드는 식별자로 사용할 수 없습니다.
가장 중요하게, 식별자는 대소문자를 구분합니다.
올바른 식별자 예: age, $salary, _value, __1_value.
잘못된 식별자 예: 123abc, -salary.
Java 수정자
다른 언어와 마찬가지로 수정자를 사용하여 클래스, 메서드 등을 수정할 수 있습니다. 수정자에는 두 가지 범주가 있습니다:
접근 수정자 - default, public, protected, private
비접근 수정자 - final, abstract, strictfp
다음 섹션에서 수정자에 대해 더 자세히 살펴보겠습니다.
Java 변수
Java에는 다음과 같은 변수 타입이 있습니다:
- 지역 변수
- 클래스 변수 (정적 변수)
- 인스턴스 변수 (비정적 변수)
Java 배열
배열은 같은 타입의 여러 변수를 저장하는 객체입니다. 그러나 배열 자체는 힙의 객체입니다. 향후 장에서 배열 선언, 생성, 초기화 방법을 살펴보겠습니다.
Java 열거형(Enums)
열거형은 Java 5.0에 도입되었습니다. 열거형은 변수가 몇 개의 미리 정의된 값만 가질 수 있도록 제한합니다. 이 열거 리스트의 값들을 열거형이라고 합니다.
열거형 사용으로 코드의 버그 수를 줄일 수 있습니다.
예를 들어 생과일 주스 가게 애플리케이션을 고려하면, 컵 크기를 소, 중, 대로 제한할 수 있습니다. 이렇게 하면 소, 중, 대 이외의 크기를 주문할 수 없게 됩니다.
예제
Live Demo
class FreshJuice {
enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }
FreshJuiceSize size;
}
public class FreshJuiceTest {
public static void main(String args[]) {
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice.FreshJuiceSize.MEDIUM;
System.out.println("Size: " + juice.size);
}
}
위 예제는 다음 결과를 생성합니다:
출력
Size: MEDIUM
참고 - 열거형은 독자적으로 선언하거나 클래스 안에 선언할 수 있습니다. 메서드, 변수, 생성자도 열거형 안에 정의할 수 있습니다.
Java 키워드
다음 목록은 Java의 예약어들을 보여줍니다. 이 예약어들은 상수, 변수 또는 기타 식별자 이름으로 사용할 수 없습니다.
| abstract | assert | boolean | break |
| byte | case | catch | char |
| class | const | continue | default |
| do | double | else | enum |
| extends | final | finally | float |
| for | goto | if | implements |
| import | instanceof | int | interface |
| long | native | new | package |
| private | protected | public | return |
| short | static | strictfp | super |
| switch | synchronized | this | throw |
| throws | transient | try | void |
| volatile | while | | |
Java 주석
Java는 C, C++과 매우 유사하게 한 줄 주석과 여러 줄 주석을 지원합니다. 주석 안의 모든 문자는 Java 컴파일러에 의해 무시됩니다.
예제
Live Demo
public class MyFirstJavaProgram {
/* This is my first java program.
* This will print 'Hello World' as the output
* This is an example of multi-line comments. */
public static void main(String []args) {
// This is an example of single line comment
/* This is also an example of single line comment. */
System.out.println("Hello World");
}
}
출력
Hello World
빈 줄 사용
주석이 있을 수 있는 공백만 포함된 줄을 빈 줄이라 하며, Java는 이를 완전히 무시합니다.
상속
Java에서 클래스는 다른 클래스에서 파생될 수 있습니다. 기본적으로 새 클래스를 만들어야 하는데 이미 필요한 코드의 일부를 가진 클래스가 있다면, 기존 코드에서 새 클래스를 파생시킬 수 있습니다.
이 개념을 사용하면 기존 클래스의 필드와 메서드를 새 클래스에서 다시 작성하지 않고 재사용할 수 있습니다. 이 시나리오에서 기존 클래스를 슈퍼클래스라고 하고 파생된 클래스를 서브클래스라고 합니다.
인터페이스
Java 언어에서 인터페이스는 객체 간 통신 방법에 대한 계약으로 정의할 수 있습니다. 인터페이스는 상속 개념에서 중요한 역할을 합니다.
인터페이스는 파생 클래스(서브클래스)가 사용해야 할 메서드들을 정의합니다. 하지만 메서드의 구현은 전적으로 서브클래스에 달려 있습니다.
다음 단계
다음 섹션에서는 Java 프로그래밍의 객체와 클래스에 대해 설명합니다. 세션이 끝날 때 Java에서 객체와 클래스가 무엇인지 명확하게 이해하게 될 것입니다.