Skip to the content.

클래스 블록과 컴파일1

자바 컴파일러는 클래스 블록 단위로 컴파일을 수행한다

클래스 블록 단위로 클래스 파일(.class 파일)을 생성한다

클래스 파일의 이름은 클래스 블록의 이름과 같다

클래스 블록과 컴파일2

한 소스 파일에 여러 개의 클래스 블록이 있을 경우 각 블록 당 한개의 클래스 파일(.class)이 생성된다

class A {}
class B {}
class C {}

컴파일을 하게되면 클래스당 하나씩 파일이 생성되어 찢어진다

클래스 이름과 소스 파일 이름1

공개 클래스의 경우 소스 파일명이 클래스 이름과 같아야 한다 다르면 컴파일 오류가 발생한다

비공개 클래스의 경우 클래스명과 소스 파일명이 일치하지 않아도 된다

클래스 접근 제어

클래스 선언할 때 사용 범위를 조정할 수 있다

public:다른 패키지의 클래스가 사용할 수 있게 공개한다.

(default):같은 패키지에 소속된 클래스만이 사용할 수 있다

문법

공개:public class 클래스명{…}

비공개:class 클래스명{…}

클래스와 소스 파일

클래스의 공개 여부와 상관없이 보통 한 소스 파일에 한 클래스를 작성한다

클래스명과 소스 파일명을 같게 하여 유지보수할 때 클래스를 찾기 쉽게 한다

클래스 이름과 소스 파일 이름2(public)

클래스를 공개하는 경우 소스 파일 이름은 반드시 클래스 이름과 같아야 한다

클래스 이름과 소스 파일 이름3

클래스를 공개하는 경우 소스 파일 이름은 반드시 클래스 이름과 같아야 한다

소스 코드의 관리를 쉽게 하기 위해 보통 한 파일에 한 클래스를 둔다.

또한 클래스 이름과 파일명을 같게 하여 찾기 쉽게 한다

소스 파일의 인코딩 지정하기(윈도우 경우)

컴파일 할 때 소스 파일의 문자집합을 지정하는 방법

컴파일 할때 소스 파일의 인코딩 문자집합을 지정하지 않으면,운영체제의 기본 문자 집합으로 저장되어 있다고 간주하고 컴파일 한다

만약 소스 파일의 인코딩 문자 집합이 운영체제의 기본 문자표와 다르다면 컴파일 오류가 발생한다

해결책-다음과 같이 컴파일할 때 옵션을 지정한다

javac -encoding [문자집합] [소스파일명]

main() 메서드

다음과 같이 JVM을 통해 클래스를 실행하면 ?JVM은 그 클래스에서 main() 메서드를 찾아 실행한다

예)java -cp bin/main java.com.eomcs.lang.ex01 Exam0400

main() 메서드가 없으면 실행 오류가 발생한다

JVM이 클래스를 실행하는 과정

1.실행할 클래스 파일을 CLASSPATH에 등록된 디렉토리 경로에서 찾는다

2.클래스 파일이 유효한 바이트코드인지 검사한다

3.메모리에 바이트코드를 적재(load)한다

4.public static void main(String[] args){}블록을 찾는다

5.main() 블록에 들어 있는 코드를 실행한다

주석-일반 주석

코드에 대한 이해를 돕기 위해 붙이는 설명이다

컴파일할 때 무시된다 즉, .class 파일에 존재하지 않는다

여러줄 주석(traditional comment)

주석의 끝 표시를 만날때까지 주석으로 간주된다

여러 줄의 설명을 붙일 때 유용한다

C,C++ 프로그래밍 언어에서 사용하는 주석 문법과 같다

한줄 주석(end-of-line comment)

줄이 끝날때까지 주석으로 간주한다

C++프로그래밍에서 사용하는 주석 문법과 같다

주석 - Javadoc 주석

“java document comment(doc comment)”

javadoc에서 HTML 문서를 만들 때 사용하는 주석이다

주로 API 문서를 자동 생성할 때 사용한다

클래스나 메서드,변수 선언에 붙일 수 있다

/**
 * 클래스에 대한 설명
 * @author eomjinyoung
 *
 */
public class Exam0200 {
  /**
   * 변수에 대한 설명
   * 변수 선언 앞에 설명을 붙여 놓으면 나중에 HTML 문서를 만들 때 추출할 수 있다.
   */
  static String message = "Hello, world!";
  
  /**
   * 메서드에 대한 설명
   * 메서드에 대한 설명을 여기에 붙여 놓으면 나중에 HTML 문서를 만들 때 추출할 수 있다.
   * @param args 애플리테이션 아규먼트 값을 보관한 배열
   */
  public static void main(String[] args) {
    System.out.println(message);
  }
}

주석-어노테이션(annotation)

클래스,변수(필드,아규먼트,로컬 변수),메서드 선언에 붙이는 주석이다

컴파일러나 JVM에서 사용할 주석이다

컴파일 한 후에도 클래스 파일(.class)에 주석을 유지할 수 있다.

클래스 파일은 메모리에 로딩할 때 주석도 함께 로딩할  수있다.

실행 중에 클래스와 함께 로딩된 주석을 추출할 수 있다.

‘프로퍼티=값’ 형태로 값을 설정한다.

애노테이션 문법
작성 방법
@애노테이션명(프로퍼티명=값,프로퍼티명=값,…)
예1) @Override
예2) @SuppressWarnings(value=”deprecation”)
예3) @SuppressWarnings(value={“unchecked”, “deprecation”})

@Override

수퍼 클래스에서 상속받은 멤버를 재정의 한다는 것을 컴파일러에게 알린다

컴파일러는 오버라이딩 규칙을 준수하는지 검사한다

만약 오버라이딩 규칙을 따르지 않는다면 컴파일 오류를 발생시킬 것이다

@Override
  public String toString() {
    return "Exam12";
  }