文章目录
- 3.1 注释
- 3.1.1 注释分类
- 3.1.2 javadoc
- 3.1.3 包注释
- 3.2 标识符和关键字
- 3.2.1 分隔符。
- 3.2.2 Java标识符规则
- 3.2.3 Java关键字
- 3.3 数据类型分类
- 3.4 基本数据类型
- 3.4.1 整数类型
- 3.4.2 字符
- 3.4.3 浮点型
- 3.4.3 数值中使用下划线分隔
- 3.4.5 布尔值
- 3.5 基本类型转化
- 3.5.3 表达式类型的自动提升
- 3.6 直接量
- 3.6.1 直接量
- 3.6.2 直接量赋值
- 3.7 运算符
- 3.7.1 算术运算符
- 3.7.2 赋值运算符
- 3.7.3 位运算法
- 3.7.4 扩展后的赋值运算法
- 3.7.5 比较运算符
- 3.7.6 逻辑运算符
- 3.7.7 三目运算符
- 3.7.8 运算符优先级
3.1 注释
3.1.1 注释分类
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */
- 包注释:
如果编写Java源代码时添加了合适的文档注释,通过JDK提供的javadoc工具就可以直接将源代码里的文档注释提取成一份系统的API文档。
PS:API文档:开发一个大型软件时,需要定义成千上万的类,而且需要很多人参与开发,API文档会详细的说明每个类、每个方法的功能及用法。
3.1.2 javadoc
- javadoc只处理文档源文件在类、接口、方法、成员变量、构造器和内部类之前的注释,忽略其他地方的文档注释。
- javadoc默认只处理以public或protected修饰的类、接口、方法、成员变量、构造器和内部类之前的文档注释。
- javadoc命令的基本用法如下:
javadoc 选项 Java源文件|包 - javadoc常用选项:
-d :指定一个路径,用于将生成的API文档放到指定目录下。
-windowtitle :指定一个字符串,用于设置API文档的浏览器窗口标题。
-doctitle :指定一个HTML格式的文本,用于指定概述页面的标题。
-header:指定一个HTML格式的文档,包含每个页面的页眉
例如命令框运行:
javadoc -d apidoc -windowtitle 测试 --doctitle 学习javadoc工具测试API文档 -header 我的类 *Test.java - 如果希望javadoc工具生成更详细的文档信息,例如方法参数、方法返回值等、则可以利用javadoc标记,常见的标记如下。
@author:指定java程序的作者
@version:指定源文件的版本
@deprecated:不推荐使用的方法
@param:方法的参数说明信息。
@return:方法的返回值说明信息
@see:“参见”,用于指定交叉参考的内容
@exception:抛出异常的类型
@throws:抛出的异常,与exception同意。
在使用javadoc工具时,在选项中加上-version,-author等。
3.1.3 包注释
API文档中的包注释并不是直接放在Java源文件中,而是必须另外指定,通常通过一个标准的HTML5文件(包描述文件)来提供包注释,包描述文件文件名通常为package.html,并与该包下所有的Java源文件放在一起,javadoc工具会提取改文件中的元素中内容作为包的描述信息。
3.2 标识符和关键字
3.2.1 分隔符。
分号:“;”、花括号:“{}”、方括号:“[]”、圆括号:“()”、空格、圆点:“.”。
3.2.2 Java标识符规则
- 区分大小写:
- 下划线必须与其他字符组合。
- 可以由字母、数字、下划线、美元符($)组成,数字不能开头。
- 不能使用(但可以包含)关键字和保留字
- 不能有空格
- 除了$外不能包含其他特殊字符。
3.2.3 Java关键字
3.3 数据类型分类
- Java是强类型语言:强类型语言的含义:(1)所有变量必须先声明再使用(2)指定类型的变量只能接受类型与之匹配的值。
- 强类型语言的优点:编译时可以更严格的语法检查,从而减少编程错误。
- 变量声明:type varName[=初始值]。
- 定义变量时可以指定初始值也可以不指定初始值。
- Java语言类型:基本数据类型和引用数据类型。
空类型(null):是null类型变量唯一的值,可以转换为引用类型的任何类型(不能转化为基本类型)
3.4 基本数据类型
3.4.1 整数类型
- 一个字节=8位,一个N位的整数类型表示的范围为:
- 如果将一个较小的整数值赋给一个byte或short变量,系统会自动将这个整数值当成byte或short类型来处理。
- 如果一个巨大的整数值,Java不会自动把这个整数值当成long来处理,需要在整数值后面加上l或者L作为后缀,
- Java中整数数值有4中表示方式:十进制、二进制(ob)、八进制(O)、十六进制(OX)。
PS:所有数字在计算机底层都是以二进制形式存在的;计算机以补码形式保存整数,补码的计算规则:
原码:十进制转化为二进制;反码:原码按位取反。
正数的补码与原码完全相同;负数的补码=反码+1;
3.4.2 字符
字符型通常用于表示单个字符,用“’”括起来。
3.4.3 浮点型
- float型:单精度浮点数,32位,1位是符号位,8位表示指数,23位表示尾数。
double型:双精度浮点数,64位,1位是符号位,11位表示指数,52位表示尾数。 - 科学计数法:5.12*10²=5.12e2;只有浮点型数值才能使用科学计数法形式表示。
- Java还提供了3种特殊的浮点数值:正无穷大、负无穷大和非数。
(1)所有正无穷大都是相等的,通过Double或者Float类的POSITIVE_INFINITY表示。
(2)所有负无穷大都是相等的,通过Double或者Float类的NEGATIVE_INFINITY表示。
(3)非数NaN不与任何数相等,甚至连NaN也不相等:通过Double或者Float的NaN表示。
PS:只有浮点数除以0才能得到正无穷(负无穷),因为Java会默认将0(整数)当成0.0(浮点数)处理;整数除以0,则会抛出异常。
3.4.3 数值中使用下划线分隔
为防止数值位数特别多而导致眼睛“看花”,Java7引入了下划线,不管是整型数值还是浮点型数值,都可以自由地使用下划线分隔数值。
3.4.5 布尔值
布尔类型的值只能是true或false,不能是0或者1.
3.5 基本类型转化
- 主动类型转换和强制类型转化。
- 当一个表示范围小的数或变量直接赋给另一个表示范围大的变量时,系统可以自动转换,否则需要强制转换。
- 当把任何基本类型的值和字符串值进行拼接运算时,基本类型的值会自动转换成字符串类型。
“+”不仅可以做加法运算,还可以进行拼接运算。 - 强制类型转换
(1)一个浮点类型强转为整数时,Java会直接截断浮点数的小数部分。
(2)把233强转为byte类型时,从变成-23,这是典型的溢出。
32位正数最高位为0,表示正数,233;截取后八位后,最高位为1,表示负数,-23.
3.5.3 表达式类型的自动提升
当一个表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。提升的规则如下:
- 所有的byte类型、short类型和char类型,都被提升为int类型。
- 整个算数表达式的数据类型自动提升到与表达式中最高等级操作数相同的类型,操作数等级如图3.10 所示。
因此,表达式的类型将严格保持和表达式中最高等级操作数相同的类型。
3.6 直接量
3.6.1 直接量
- 直接量:在程序中通过源代码直接给出的值,如int a=5,5就是一个直接量。
- 直接量通常只有三种类型:基本类型、字符串类型、null类型,具体的类型为:int、long、float、double、Boolean、char、String、null。
3.6.2 直接量赋值
- 通常把直接量赋值给对应类型的变量。
- 直接量可以直接赋值给另一种类型的变量,这种赋值需要满足图3.10的自动类型转换,如果不符合,需要强制类型转换。
- String类型的直接量只能赋给其他类型的变量;null类型的直接量可以直接赋给任何引用类型的变量,包括string类型;boolean类型的直接量只能赋给Boolean类型。
- 关于字符串直接量:当程序第一次使用某个字符串直接量时,Java会使用常量池来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java会直接使用常量池中的字符串直接量。
(1)常量池:编译期被确定并被保存在已编译的“.class”文件中的一些数据。它包括类、方法、接口中的常量、字符串直接量。
(2)string类型是一个典型的不可变量,String类型对象创建出来就不可能被改变,因此无需共享String对象会导致混乱。
3.7 运算符
Java运算法:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、类型相关运算符。
3.7.1 算术运算符
7个:加:+;减:-;乘:*;除:/;求余:%;自加:++;自减:–
3.7.2 赋值运算符
赋值:=
3.7.3 位运算法
7个:按位与:&;按位或:|;按位非:~;按位异或:^;左移:<<;右移:>>;无符号右移:>>>。
- 对于低于int类型的操作数总是先自动类型转换成int类型后再移位。
- 对于int类型的整数移位a>>b,当b>32时,系统先用b对32求余,得到的结果才是真正移位的位数。
- 对于long类型的整数,移位a>>b,当b>64时,总是先用b对64求余,得到的结果才是真正移位的位数。
3.7.4 扩展后的赋值运算法
3.7.5 比较运算符
大于:>;大于等于:>=;小于:<;小于等于:<=;等于:=;不等于:!=;
3.7.6 逻辑运算符
与:&&;不短路与:&;或:||;不短路或:|;非:!;异或:^;
&与&&的区别:&总会计算前后两个操作数,而&&先计算左边的操作数,如果左边的操作数为false,则直接返回false,根本不会计算右边的值。
3.7.7 三目运算符
条件?A:B,如果条件符合执行A,否则执行B。
3.7.8 运算符优先级