本文只是粗浅地整理注释的相关知识点,保证够用,但未曾深挖,如有疑问或者建议,欢迎指出。
注释用来说明某段代码的作用,或者说明某个类的用途,每个方法的功能,以及该方法的参数和返回值的数据类型及意义等。
另一方面:正如代码是写个人看的,丑陋的代码和过多的注释也不是什么好事,把握分寸也很重要
//单行注释
/* ..多行注释.... */
/**.... 文档注释……*/
代码示例:
package com.leo.java.comment;
/**
* 这是文档注释
* @author xuexiaolei
* @version 2018年01月11日
*/
public class Test {
public static void main(String[] args) {
//这是单行注释
System.out.println("这是单行注释……");
/*
* 这是多行注释
*/
System.out.println("这是多行注释……");
}
}
IDE操作提示:
通用的Intellj/Eclipse快捷键如下:Ctrl+/是单行注释 Ctrl+Shift+/ 是多行注释
单行注释和多行注释是同一种颜色提醒,文档注释会高亮提醒。
文档注释是可以被 javadoc 工具自动生成文档的方法的。
文档注释分为两部分:描述部分和标记部分
/**
* 描述部分(description)
*
* 标记部分(block tags)
*/
Collection接口的注释示例
/**
* The root interface in the collection hierarchy. A collection
* represents a group of objects, known as its elements. Some
* collections allow duplicate elements and others do not. Some are ordered
* and others unordered. The JDK does not provide any direct
* implementations of this interface: it provides implementations of more
* specific subinterfaces like Set and List. This interface
* is typically used to pass collections around and manipulate them where
* maximum generality is desired.
*
* Bags or multisets (unordered collections that may contain
* duplicate elements) should implement this interface directly.
*
*
All general-purpose Collection implementation classes (which
* typically implement Collection indirectly through one of its
* subinterfaces) should provide two "standard" constructors: a void (no
* arguments) constructor, which creates an empty collection, and a
* constructor with a single argument of type Collection, which
* creates a new collection with the same elements as its argument. In
* effect, the latter constructor allows the user to copy any collection,
* producing an equivalent collection of the desired implementation type.
* There is no way to enforce this convention (as interfaces cannot contain
* constructors) but all of the general-purpose Collection
* implementations in the Java platform libraries comply.
*
*
The "destructive" methods contained in this interface, that is, the
* methods that modify the collection on which they operate, are specified to
* throw UnsupportedOperationException if this collection does not
* support the operation. If this is the case, these methods may, but are not
* required to, throw an UnsupportedOperationException if the
* invocation would have no effect on the collection. For example, invoking
* the {@link #addAll(Collection)} method on an unmodifiable collection may,
* but is not required to, throw the exception if the collection to be added
* is empty.
*
*
* Some collection implementations have restrictions on the elements that
* they may contain. For example, some implementations prohibit null elements,
* and some have restrictions on the types of their elements. Attempting to
* add an ineligible element throws an unchecked exception, typically
* NullPointerException or ClassCastException. Attempting
* to query the presence of an ineligible element may throw an exception,
* or it may simply return false; some implementations will exhibit the former
* behavior and some will exhibit the latter. More generally, attempting an
* operation on an ineligible element whose completion would not result in
* the insertion of an ineligible element into the collection may throw an
* exception or it may succeed, at the option of the implementation.
* Such exceptions are marked as "optional" in the specification for this
* interface.
*
*
It is up to each collection to determine its own synchronization
* policy. In the absence of a stronger guarantee by the
* implementation, undefined behavior may result from the invocation
* of any method on a collection that is being mutated by another
* thread; this includes direct invocations, passing the collection to
* a method that might perform invocations, and using an existing
* iterator to examine the collection.
*
*
Many methods in Collections Framework interfaces are defined in
* terms of the {@link Object#equals(Object) equals} method. For example,
* the specification for the {@link #contains(Object) contains(Object o)}
* method says: "returns true if and only if this collection
* contains at least one element e such that
* (o==null ? e==null : o.equals(e))." This specification should
* not be construed to imply that invoking Collection.contains
* with a non-null argument o will cause o.equals(e) to be
* invoked for any element e. Implementations are free to implement
* optimizations whereby the equals invocation is avoided, for
* example, by first comparing the hash codes of the two elements. (The
* {@link Object#hashCode()} specification guarantees that two objects with
* unequal hash codes cannot be equal.) More generally, implementations of
* the various Collections Framework interfaces are free to take advantage of
* the specified behavior of underlying {@link Object} methods wherever the
* implementor deems it appropriate.
*
*
Some collection operations which perform recursive traversal of the
* collection may fail with an exception for self-referential instances where
* the collection directly or indirectly contains itself. This includes the
* {@code clone()}, {@code equals()}, {@code hashCode()} and {@code toString()}
* methods. Implementations may optionally handle the self-referential scenario,
* however most current implementations do not do so.
*
*
This interface is a member of the
*
* Java Collections Framework.
*
* @implSpec
* The default method implementations (inherited or otherwise) do not apply any
* synchronization protocol. If a {@code Collection} implementation has a
* specific synchronization protocol, then it must override default
* implementations to apply that protocol.
*
* @param the type of elements in this collection
*
* @author Josh Bloch
* @author Neal Gafter
* @see Set
* @see List
* @see Map
* @see SortedSet
* @see SortedMap
* @see HashSet
* @see TreeSet
* @see ArrayList
* @see LinkedList
* @see Vector
* @see Collections
* @see Arrays
* @see AbstractCollection
* @since 1.2
*/
public interface Collection<E> extends Iterable<E> {
...
}
分段\
关键字\
来强调关键字,强调如:java关键字,包名,类名,方法名等参考资料:
单行注释和多行注释
如何写Java文档注释(Java Doc Comments)