第二章数据类型和运算符
Java语言是一门强类型语言。强类型包含两方面的含义。
- 所有变量必须先声明、后使用;
- 指定类型的变量只能接受与之匹配的值。
2.1注释
编写程序时总需要为程序添加一些注释,用以说明某段代码的作用,或者说明某个类的用途、某个方法的功能,以及该方法的参数和返回值的数据类型及意义等。
为什么要添加程序注释?至少有如下三方面的考虑:
- 永远不要过于相信自己的理解能力!
- 可读性第一,效率第二!
- 代码即文档!
Java语言的注释一共有三种类型:
- 单行注释
- 多行注释
- 文档注释
2.1.1单行注释和多行注释
//这是单行注释
/*
这是多行注释
*/
2.1.2文档注释
如果编写Java源代码时添加了合适的文档注释,然后通过JDK提供的javadoc工具可以直接将源代码里的文档注释提取成一份系统的API文档。
下载Java 8的API文档其实很简单,登录http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载后得到一个压缩包文件。
将压缩包文件解压缩到任意路径,将会得到一个docs文件夹,这个文件夹下的内容就是JDK文档,JDK文档不仅包含API文档,还包含JDK的其他说明文档。
进入docs/api路径下,打开index.html文件,可以看到JDK 8 API文档首页,这个首页就是一个典型的 Java API文档首页,如图所示
API文档被分为三个部分,左上角部分时API文档“包列表区”,左下角时API文档的“类列表区”,右边页面是“详细说明区”。
/**
这种是文档注释
*/
javadoc的常用选项有如下几个:
- -d :该选项指定一个路径,用于将生成的API文档放到指定目录下。
- -windowtitle
:该选项指定一个字符串,用于设置API文档的浏览器窗口标题。 - -doctitle :该选项指定一个HTML格式的文本,用于指定改善页面的标题。
- -head :该选项指定一个HTML格式的文本,包含每个页面的页眉。
常用的javadoc标记如下:
- @author:指定Java程序的作者。
- @version:指定源文件的版本。
- @deprecated:不推荐使用的方法。
- @param:方法的参数说明信息。
- @return:方法的返回说明信息。
- @see:“参见”,用于指定交叉参考的内容。
- @exception:抛出异常的类型。
- @throws:抛出的异常,和@exception同义。
2.2标识符和关键字
2.2.1分隔符
- 分号。Java采用分号(;)作为语句的分隔,因此每个Java语句
必须使用分号作为结尾。
下面语句是合法的Java语句
int age = 25; String name = “李刚”;
String hello = “你好!” +
“Java”;
Java语句可以跨越多行书写,但一个字符串、变量名不能跨越多行。
例如,下面的Java语句是错误的:
//字符串不饿能跨越多行
String a = “dddddd
xxxxxx”;
//变量名不能跨越多行
String na
me = “李刚”;
- 花括号
花括号的作用就是定义一个代码块。
- 方括号
方括号的主要作用就是访问数组元素。
- 圆括号
定义方法时必须使用圆括号来包含所有的形参声明,调用方法是也必须使用圆括号来传入实参数; - 圆括号还可以将表达式中某个部分括成一个整体,保证这个部分优先计算
- 圆括号还可以作为强制类型转换的运算符。
- 空格
(1)空格符(Space)
(2)制表符(Tab)
(3)回车(Enter) - 圆点
圆点(.)通常用作类/对象和它的成员(包括成员变量、方法和内部类)之间的分隔符,表明调用某个类或某个实例的指定成员。
2.2.2标识符规则
- 标识符可以由字母、数字、下划线(_)和美元符号($)组成,其中数字不能打头。
- 标识符不能是Java关键字和保留字,但可以包含关键字和保留字。
- 标识符不能包含空格。
- 标识符只能包含美元符($),不能包含@、#等其他特殊字符。
2.2.3Java关键字
Java语言中有一些具有特殊用途的单词被称为关键字(keyword),当定义标识符时,不要让标识符和关键字相同,否则将引起错误。
2.3数据类型分类
Java语言支持的类型分为两类:基本类型(Primitive Type)和引用类型(Reference Type)。
基本类型包括boolean类型和数值类型。数值类型有整数类型和浮点类型。整数类型包括byte、short、int、long、char;浮点类型包括float和double。
引用类型包括类、接口和数组类型,还有一种特殊的null类型。
2.4基本数据类型
字符型值有如下三种表示形式
- 直接通过单个字符来指定字符型值,例如’A’、’0’、’9’等。
- 通过转义字符表示字符型值,例如’\n’,’\t’等。
- 直接使用Unicode值来表示字符型值,格式是’\uXXXX’。
2.5基本类型的类型转换
2.5.1自动类型转换
2.5.2强制类型转换
如果希望把右侧的类型转换为左边的类型,则必须进行强制类型转换,强制类型转换的语法是:(target)value,强制类型转换的运算符是圆括号。
2.5.3表达式类型的自动提升
Java定义了如下的自动提升规则。
- 所有的byte类型、short类型和char类型将被提升到int类型。
- 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数相同的类型。
2.6直接量
2.6.1直接量的类型
- int
- long
- float
- double
- boolean
- char
- String
- null
2.7运算符
2.7.1算术运算符
- +:加法运算符。
- -:减法运算符。
- *:乘法运算符。
- /:除法运算符。
- %:求余运算符。
- ++:自加。
- –:自减。
2.7.2赋值运算符
2.7.3位运算符
- &:按位与。
- |:按位或。
- ~:按位非。
- ^:按位异或。
- <<:左移运算符。
-
:右移运算符。
-
:无符号右移运算符。
2.7.4扩展后的赋值运算符
- +=
- -=
- *=
- /=
- %=
- &=
- |=
- ^=
- <<=
-
=
-
=
2.7.5比较运算符
-
:大于
-
=:大于等于
- <:小于
- <=:小于等于
- ==:等于
- !=:非等于
2.7.6逻辑运算符
- &&:与。
- &:不短路与。
- ||:或
- |:不短路或
- !:非
- ^:异或
2.7.7三目运算符
?:
(expression) ? if-true-statement : if-false-statement;
2.7.8运算符的结合性和优先级
Java语言的大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外
2.8本章练习
- 定义学生、老师、教室三个类,位三个类编写文档注释,并使用javadoc工具来生成API文档。
- 使用8钟基本数据类型声明多个变量,并使用不同方式为8种基本类型的变量赋值,熟悉每种数值类型的赋值规则和表示方式。
- 在数值型的变量之间进行类型转换,包括低位向高位的自动转换、高位向低位的强制转换。
- 使用数学运算符、逻辑运算符编写40个表达式,先自行计算各表达式的值,然后通过程序输出这些表达式的值进行对比,看看能否做到一切尽在掌握。