第3章 数据类型和运算符
本章要点
- 注释的重要性和用途
- 单行注释语法和多行注释语法
- 文档注释的语法和常用的javadoc标记
- javadoc命令的用法
- 掌握查看API文档的方法
- 数据类型的两大类
- 8种基本类型及各自的注意点
- 自动类型转换
- 强制类型转换
- 表达式类型的自动提升
- 直接量的类型和赋值
- Java提供的基本运算符
- 运算符的结合性和优先级
3.1 注释
程序注释是源代码的一个重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上。
3.1.1 单行注释和多行注释
public class CommentTest{
/*
这里面的内容全部是多行注释
Java语言真的很有趣
*/
public static void main(String[] args)
{
//这一行是单行注释
System.out.println("Hello World!");
//System.out,println("这行代码被注释了,将不会被编译、执行");
}
}
3.1.2 Java 9增强文档注释
注释文档是用于生成API文档的,而API文档主要用于说明类、方法、成员变量的功能。因此,javadoc工具默认只处理以public或protected修饰的类、接口、方法、成员变量、构造器和内部类之前的注释,忽略其他地方的文档注释。
java 9的API文档已经支持HTML 5规范,因此必须保证文档注释中的内容完全兼容HTML 5的规范。
文档注释以/*开始,以/结束。
Javadoc工具的基本用法:
Javadoc 选项 Java源文件|包
javadoc命令对源文件、包生成API文档,在上面的语法格式中,Java源文件可以支持通配符,使用*.java来代表当前路径下所有的java源文件。
常用选项:
-d:该选项指定一个路径,用于将生成的API文档存放到指定目录下
-windowtitle
-doctitle:该选项制定一个HTML格式的文本,用于指定概述页面的标题
只有对处于多个包下的源文件来生成API文档时,才有概述页面
-header>:该选项制定一个HTML格式的文本,包含每个页面的页眉。
例如:
package lee;
/**
*Description:
*网站:<a href="http://www.crazyit.org">疯狂Java联盟</a><br>
*CopyRight (C),2001-2015,Yeeku.H.Lee<br>
*This program is protected by copyright laws.<br>
*Program Name:<br>
*Date:<br>
*@author Yeeku.H.Lee kongyeeku@163.com
*@version 1.0
*/
public class JavadocTest
{
/**
*简单测试成员变量
*/
protected String name;
/**
*主方法,程序的入口
*/
public static void main(String [] args){
System.out.println("Hello World!");
}
}
javadoc -d apidoc -windowtitle 测试 -doctitle 学习 javadoc工具的测试API文档 -header 我的类 *Test.java
如果希望javadoc工具生成更详细的文档信息,则可利用javadoc标记,常见的标记如下:
- @author :指定java程序的作者。
- @version:指定源文件的版本。
- @deprecated:不推荐使用的方法。
- @param:方法的参数说明信息。
- @return:方法的返回值说明信息。
- @see:“参见”。用于指定交叉参考的内容。
- @exception:抛出异常的类型。
- @throws:抛出的异常,与上同。
例如:
package yeeku;
/**
*Description:
*网站:<a href="http://www.crazyit.org">疯狂Java联盟</a><br>
*CopyRight (C),2001-2015,Yeeku.H.Lee<br>
*This program is protected by copyright laws.<br>
*Program Name:<br>
*Date:<br>
*@author Yeeku.H.Lee kongyeeku@163.com
*@version 1.0
*/
public class JavadocTagTest
{
/**
*一个得到打招呼字符串的方法
*@param name 该参数指定向谁打招呼
*@return 返回打招呼的字符串
*/
public String hello(String name)
{
return name +",你好!";
}
}
3.2 标识符和关键字
3.2.1 分隔符
Java语言里的分号(;)、花括号({})、方括号([])、圆括号(())、空格、圆点(.)都具有特殊的分割作用,因此被统称为分隔符。
3.2.2 Java 9的标识符规则
- 标识符可以由字母、数字、下划线(_)和美元符号($)组成,其中数字不能打头。
- 标识符不能是Java的关键字和保留字,但可以包含关键字和保留字。
- 标识符不能包含空格。标识符不能包含空格。
- 标识符只能包含美元符号($),不能包含@、#等其他特殊字符。
3.2.3 Java关键字
Java语言中有一些具有特殊用途的单词被称为关键字。
Java的所有关键字都是小写的,TRUE、FALSE和NULL(三个特殊的直接量)都不是JAVA关键字。JAVA一共包含50个关键字,如下表:
3.3 数据类型分类
Java语言是强类型语言,强类型包含两方面的含义:(1)所有的变量必须先声明后使用;(2)指定类型的变量只能接受类型与之匹配的值。
Java语言支持的类型包括:基本类型和引用类型。
基本类型:数值类型和boolean类型。
引用类型:类、接口和数组类型。
3.4 基本数据类型
3.5 基本类型的类型转换
Java语言提供7种数值类型之间可以相互转换,有两种转换方式:自动类型转换和强制类型转换。
3.5.1 自动类型转换
3.5.2 强制类型转换
如果希望把上图箭头右边的类型转换为左边的类型,则必须进行强制类型转换,语法格式:(targetType)value
例如:
public class NarrowConversion
{
public static void main(String[] args)
{
int iValue = 233;
// 强制把一个int类型的值转换为byte类型的值
byte bValue = (byte)iValue;
// 将输出-23
System.out.println(bValue);
double dValue = 3.98;
// 强制把一个double类型的值转换为int
int tol = (int)dValue;
// 将输出3
System.out.println(tol);
}
}
3.5.3 表达式类型的自动提升
当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。Java定义如下自动提升规则:
- 所有的byte类型、short类型和char类型将被提升到int类型。
- 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
3.6 直接量
直接量是指在程序中通过源代码直接给出的值。
3.6.1 直接量的类型
只有三种类型:基本类型、字符串类型和null类型。(int、long、float、double、boolean、char、String、null)
3.7 运算符
Java语言中的运算符可以分为如下:
- 算术运算符(+、-、*、/、%、++、–)
- 赋值运算符(=)
- 比较运算符(>、>=、<、<=、==)
- 逻辑运算符(&&、&、||、!、^)
- 位运算符(&按位与、|按位或、~按位非、^按位异或、<<左移、>>右移、>>>无符号右移)
- 三目运算符(?:)
String str2=5 > 3 ? “5大于3” : “5不大于3”; - 运算符的结合性和优先级
Java语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,三目运算符、赋值运算符和三目运算符是从右向左结合的,即从右向左运算。
注意: - 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成;
- 不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序。