【Java学习笔记】41.Java 文档注释及Java 8 新特性
创始人
2025-06-01 14:43:21
0

前言

本章介绍Java的文档注释和Java 8 新特性。

Java 文档注释

Java 支持三种注释方式。前两种分别是 // 和 /* /,第三种被称作说明注释,它以 /* 开始,以 */结束。

说明注释允许你在程序中嵌入关于程序的信息。你可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中。

说明注释,使你更加方便的记录你的程序信息。

javadoc 标签

javadoc 工具软件识别以下标签:

标签描述示例
@author标识一个类的作者@author描述
@deprecated指名一个过期的类或成员@deprecated描述
{@docRoot}指明当前文档根目录的路径目录路径
@exception标志一个类抛出的异常@exception异常名称说明
{@inheritDoc}从直接父类继承的注释从直接超类继承注释。
{@link}插入一个到另一个主题的链接{@link名称文本}
{@linkplain}插入一个到另一个主题的链接,但是该链接显示纯文本字体插入指向另一个主题的内联链接。
@param说明一个方法的参数@param参数名称说明
@return说明返回值类型@return解释
@see指定一个到另一个主题的链接@see锚
@serial说明一个序列化属性@serial描述
@serialData说明通过writeObject( ) 和 writeExternal( )方法写的数据@serialData描述
@serialField说明一个ObjectStreamField组件@serialField名称类型说明
@since标记当引入一个特定的变化时@since发布
@throws和 @exception标签一样.@throws 标记与@exception标记的含义相同。
{@value}显示常量的值,该常量必须是静态属性。显示常量的值,该常量必须是静态字段。
@version指定类的版本@version信息

文档注释

在开始的 /** 之后,第一行或几行是关于类、变量和方法的主要描述。

之后,你可以包含一个或多个各种各样的 @ 标签。每一个 @ 标签必须在一个新行的开始或者在一行的开始紧跟星号(*).

多个相同类型的标签应该放成一组。例如,如果你有三个 @see 标签,可以将它们一个接一个的放在一起。

下面是一个类的说明注释的实例:

/*** 这个类绘制一个条形图
* @author 鲁努布
* @version 1.2 */

javadoc 输出什么

javadoc 工具将你 Java 程序的源代码作为输入,输出一些包含你程序注释的HTML文件。

每一个类的信息将在独自的HTML文件里。javadoc 也可以输出继承的树形结构和索引。

由于 javadoc 的实现不同,工作也可能不同,你需要检查你的 Java 开发系统的版本等细节,选择合适的 Javadoc 版本。

实例
下面是一个使用说明注释的简单实例。注意每一个注释都在它描述的项目的前面。

在经过 javadoc 处理之后,SquareNum 类的注释将在 SquareNum.html 中找到。

SquareNum.java 文件代码:

导入 Java。io.*;/**
* 这个类演示了文档注释
* @author  阿扬·阿姆赫德
*  @version 1.2  */ 公共类 SquareNum { /*** 此方法返回数字的平方。* 这是一个多行描述。您可以使用*任意数量的行。* @param num 要平方的值。* @return 平方米。 */ 公共双平方(双  数字) { 返回数字  * 数字;  } /*** 此方法输入来自用户的号码。* @return 值输入为双精度。* @exception IOException 输入错误。*  @see  IOException */ public double getNumber() 抛出 IOException {   InputStreamReader isr = new InputStreamReader(系统。在); BufferedReader inData = new   BufferedReader(isr);字符串 str; str = inData。readLine(); 返回(新的双倍(str))。双值();  } /*** 此方法演示了 square()。* @param参数未使用。* @return什么都没有。* @exception IOException 输入错误。*  @see  IOException */ public static void main(String args[]) 抛出 IOException  {  SquareNum ob = new SquareNum(); 双值; 系统。输出.);}
}

如下,使用 javadoc 工具处理 SquareNum.java 文件:

$ javadoc SquareNum.java
Loading source file SquareNum.java...
Constructing Javadoc information...
Standard Doclet version 1.5.0_13
Building tree for all the packages and classes...
Generating SquareNum.html...
SquareNum.java:39: warning - @return tag cannot be used\in method with void return type.
Generating package-frame.html...
Generating package-summary.html...
Generating package-tree.html...
Generating constant-values.html...
Building index for all the packages and classes...
Generating overview-tree.html...
Generating index-all.html...
Generating deprecated-list.html...
Building index for all classes...
Generating allclasses-frame.html...
Generating allclasses-noframe.html...
Generating index.html...
Generating help-doc.html...
Generating stylesheet.css...
1 warning
$

Java 8 新特性

Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的 Stream API 等。

新特性

Java8 新增了非常多的特性,我们主要讨论以下几个:

  • Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
  • 方法引用 −方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
  • 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
  • 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
  • Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
  • Date Time API − 加强对日期与时间的处理。
  • Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
  • Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。

在关于 Java 8 文章的实例,我们均使用 jdk 1.8 环境,你可以使用以下命令查看当前 jdk 的版本:

$ java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)

编程风格

Java 8 希望有自己的编程风格,并与 Java 7 区别开,以下实例展示了 Java 7 和 Java 8 的编程格式:

Java8Tester.java 文件代码:

导入 Java。实用。收藏;导入 Java。实用。列表;导入 Java。实用。数组列表;导入 Java。实用。比较器; public class Java8Tester  { public  static void main(String args[]){  List names1 = new ArrayList(); 名称1.add(“谷歌”); 名称1.add(“csdn ”); 名称1.添加(“淘宝”); 名称1.添加(“百度”); 名称1.add(“新浪”); List names2 = new ArrayList();  名称2.add(“谷歌”); 名称2.add(“csdn ”); 名称2.添加(“淘宝”); 名称2.添加(“百度”); 名称2.add(“新浪”); Java8Tester tester = new Java8Tester(); 系统。出。println(“使用 Java 7 语法: ”); 测试人员。sortUsingJava7(names1); 系统.出。println(names1); 系统。出。println(“使用 Java 8 语法: ”); 测试人员。sortUsingJava8(names2); 系统。出。println(names2);  } // 使用 java 7 排序 private void sortUsingJava7(List names){ Collections.sort(names, new Comparator() { @Override public int compare(String s1, 字符串 s2) { 返回 s1.比较到(s2);  } });  } // 使用 java 8 排序 private void sortUsingJava8(List names){ Collections.sort(names, (s1,  s2) -> s1.比较到(s2));}
}

执行以上脚本,输出结果为:

$ javac Java8Tester.java
$ java Java8Tester
使用 Java 7 语法: 
[Baidu , Google , csdn , Sina , Taobao ]
使用 Java 8 语法: 
[Baidu , Google , csdn , Sina , Taobao ]

接下来我们将详细为大家简介 Java 8 的新特性:

序号特性
1Lambda 表达式
2方法引用
3函数式接口
4默认方法
5
6可选类
7Nashorn, JavaScript 引擎
8新的日期时间 API
9基地64

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...