[java] Java 주석의 / ** 및 / *

차이점은 무엇입니까

/**
 * comment
 *
 *
 */

/*
 * 
 * comment
 *
 */

자바? 언제 사용해야합니까?



답변

첫 번째 형태는 Javadoc 입니다. javadoc도구에서 생성 된 코드에 대한 공식 API를 작성할 때이 기능을 사용합니다 . 예를 들어, Java 7 API 페이지 는 Javadoc을 사용하며 해당 도구에 의해 생성되었습니다.

Javadoc에서 볼 수있는 몇 가지 일반적인 요소는 다음과 같습니다.

  • @param: 이것은 메소드에 전달되는 매개 변수와 예상되는 값을 나타내는 데 사용됩니다.

  • @return: 메소드가 어떤 결과를 돌려 줄지 나타내는 데 사용됩니다.

  • @throws: 특정 입력의 경우 메소드에서 예외 또는 오류가 발생 함을 표시하는 데 사용됩니다.

  • @since:이 클래스 또는 함수가 사용 가능한 가장 초기 Java 버전을 나타내는 데 사용됩니다.

예를 들어 다음과 같은 compare방법에 대한 Javadoc 이 있습니다 Integer.

/**
 * Compares two {@code int} values numerically.
 * The value returned is identical to what would be returned by:
 * <pre>
 *    Integer.valueOf(x).compareTo(Integer.valueOf(y))
 * </pre>
 *
 * @param  x the first {@code int} to compare
 * @param  y the second {@code int} to compare
 * @return the value {@code 0} if {@code x == y};
 *         a value less than {@code 0} if {@code x < y}; and
 *         a value greater than {@code 0} if {@code x > y}
 * @since 1.7
 */
public static int compare(int x, int y) {
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

두 번째 형식은 블록 (여러 줄) 주석입니다. 주석에 여러 줄을 추가하려는 경우이를 사용합니다.

나는 당신이 후자의 형태를 조금만 사용하고 싶다고 말할 것이다 . 즉, 메소드 / 복합 함수의 동작을 설명하지 않는 블록 주석으로 코드를 과도하게 사용하고 싶지 않습니다.

Javadoc은이 두 가지를 더 잘 설명하고이를 사용하여 실제 문서를 생성 할 수 있으므로 간단한 블록 주석보다 Javadoc을 사용하는 것이 더 바람직합니다.


답변

Java 프로그래밍 언어의 경우 두 언어 간에 차이없습니다 . Java에는 전통적인 주석 ( /* ... */)과 줄 끝 주석 ( ) 이라는 두 가지 유형의 주석이 // ...있습니다. Java 언어 사양을 참조하십시오 . 그래서, 자바 프로그래밍 언어, 모두 /* ... */와는 /** ... */즉, 기존의 코멘트 인스턴스이며, 그들은 모두 자바 컴파일러에 의해 정확히 동일하게 취급되어 무시됩니다 (: 그들은 공백으로 처리됩니다 이상 올바르게).

그러나 Java 프로그래머는 Java 컴파일러만을 사용하지 않습니다. 컴파일러, IDE, 빌드 시스템 등을 포함한 전체 툴 체인을 사용합니다. 이러한 툴 중 일부는 Java 컴파일러와 다르게 해석합니다. 특히 /** ... */주석은 Java 플랫폼에 포함되어 있고 문서를 생성 하는 Javadoc 도구로 해석됩니다 . Javadoc 도구는 Java 소스 파일을 스캔하고 그 사이의 부분 /** ... */을 문서로 해석합니다 .

이것은 like FIXME와 같은 태그와 유사합니다 TODO. // TODO: fix thisor 와 같은 주석을 포함하면 // FIXME: do that대부분의 IDE는 그러한 주석을 강조 표시하여 잊지 않도록합니다. 그러나 Java의 경우 주석 일뿐입니다.


답변

첫 번째는 Javadoc 주석입니다. javadoc도구로 처리 하여 클래스에 대한 API 문서를 생성 할 수 있습니다. 두 번째는 일반적인 블록 주석입니다.


답변

JLS 3.7 섹션을 읽으면 Java 주석에 대해 알아야 할 모든 내용이 잘 설명되어 있습니다.

두 가지 종류의 주석이 있습니다.

  • / * 텍스트 * /

일반적인 주석 : ASCII 문자 / *에서 ASCII 문자 * /까지의 모든 텍스트는 무시됩니다 (C 및 C ++에서와 같이).

  • //본문

줄 끝 주석 : // ASCII 문자에서 줄 끝까지의 모든 텍스트는 무시됩니다 (C ++에서와 같이).


질문에 대해

첫번째

/**
 *
 */

Javadoc Technology 선언에 사용됩니다 .

Javadoc은 소스 파일 세트에서 선언 및 문서 주석을 구문 분석하고 클래스, 인터페이스, 생성자, 메소드 및 필드를 설명하는 HTML 페이지 세트를 생성하는 도구입니다. Javadoc Doclet을 사용하여 Javadoc 출력을 사용자 정의 할 수 있습니다. Doclet은 Doclet API로 작성된 프로그램으로, 도구가 생성 할 출력의 내용과 형식을 지정합니다. Doclet을 작성하여 HTML, SGML, XML, RTF 및 MIF와 같은 모든 종류의 텍스트 파일 출력을 생성 할 수 있습니다. Oracle은 HTML 형식 API 문서를 생성하기위한 표준 Doclet을 제공합니다. Doclet을 사용하여 API 문서 작성과 관련이없는 특수 작업을 수행 할 수도 있습니다.

자세한 내용 DocletAPI 를 참조하십시오 .

사이에 두 번째는, 같은 JLS 명확하게 설명, 모든 텍스트를 무시 /*하고 */여러 의견을 작성하는 데 사용됩니다 따라서.


Java의 주석에 대해 알고 싶은 다른 것들

  • 주석이 중첩되지 않습니다.
  • /* and */로 시작하는 주석에는 특별한 의미가 없습니다 //.
  • //로 시작하는 주석에는 특별한 의미가 없습니다 /* or /**.
  • 어휘 문법은 주석이 문자 리터럴 ( §3.10.4 ) 또는 문자열 리터럴 ( §3.10.5 ) 내에서 발생하지 않음을 의미합니다 .

따라서 다음 텍스트는 완전한 단일 주석입니다.

/* this comment /* // /** ends here: */


답변

기존 답변이 문제 의이 부분을 적절하게 해결했다고 생각하지 않습니다.

언제 사용해야합니까?

조직 내에서 게시되거나 재사용 될 API를 작성하는 경우 모든 public클래스, 메소드 및 필드뿐만 아니라 protectedfinal클래스 의 메소드 및 필드에 대한 포괄적 인 Javadoc 주석을 작성해야합니다 . Javadoc은 전제 조건, 사후 조건, 유효한 인수, 런타임 예외, 내부 호출 등과 같이 메소드 서명으로 전달할 수없는 모든 것을 포함해야합니다 .

내부 API (동일한 프로그램의 다른 부분에서 사용되는 API)를 작성하는 경우 Javadoc은 덜 중요합니다. 그러나 유지 보수 프로그래머의 이익을 위해 올바른 사용법이나 의미가 즉시 명확하지 않은 모든 메소드 또는 필드에 대해 Javadoc을 작성해야합니다.

Javadoc의 “킬러 기능”은 Eclipse 및 기타 IDE와 밀접하게 통합되어 있다는 것입니다. 개발자는 식별자 위에 마우스 포인터를 올려 놓아야 알 수있는 모든 것을 배울 수 있습니다. 경험이 풍부한 Java 개발자에게는 문서를 지속적으로 참조하는 것이 제 2의 특성이되어 자체 코드의 품질을 향상시킵니다. API가 Javadoc과 함께 문서화되지 않은 경우 숙련 된 개발자는 사용하지 않을 것입니다.


답변

다음 Java 코드 목록의 주석은 회색으로 표시됩니다.

/**
 * The HelloWorldApp class implements an application that
 * simply displays "Hello World!" to the standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //Display the string.
    }
}

Java 언어는 세 가지 종류의 주석을 지원합니다.

/* text */

컴파일러는에서 /*까지 모든 것을 무시 합니다 */.

/** documentation */

이것은 문서 주석 (문서 주석)을 나타냅니다. 컴파일러는 /*and 를 사용하는 주석을 무시하는 것처럼 이러한 종류의 주석을 무시합니다 */. JDK javadoc 도구는 자동 생성 된 문서를 준비 할 때 문서 주석을 사용합니다.

// text

컴파일러는 //줄 끝까지 모든 것을 무시합니다 .

이제 언제 사용해야하는지에 대해 :

// text한 줄의 코드에 주석을 달고 싶을 때 사용하십시오 .

/* text */여러 줄의 코드에 주석을 달고 싶을 때 사용하십시오 .

/** documentation */ 프로그램 문서 자동 생성에 사용할 수있는 프로그램에 대한 정보를 추가하려는 경우에 사용하십시오 .


답변

첫 번째는 클래스, 인터페이스, 메소드 등에서 정의한 Javadoc을위한 것입니다. Javadoc을 이름 제안으로 사용하여 클래스의 역할 또는 메소드가 수행하는 작업에 대한 코드를 문서화하고 보고서를 생성 할 수 있습니다.

두 번째는 코드 블록 주석입니다. 예를 들어 컴파일러가 해석하기를 원하지 않는 코드 블록이 있다고 가정하면 코드 블록 주석을 사용합니다.

다른 하나는 // 당신이 진행하는 코드 라인이 무엇을할지 지정하기 위해 문장 레벨에서 사용하는 것입니다.

// TODO와 같은 다른 것들도 있습니다. 이것은 나중에 그 장소에서 무언가를하고 싶다고 표시합니다.

// FIXME 임시 솔루션이 있지만 나중에 방문하여 더 나아질 때 사용할 수 있습니다.

도움이 되었기를 바랍니다