
3.3 原理学习:Java的数据类型、运算符、关键字、程序结构
3.3.1 Java的数据类型
Java有4种基本数据类型,可以用来存储数值、字符和布尔值。
(1)整型。整型变量用来存储整数数值,即没有小数部分的数值。整型数据有3种表示形式:十进制、八进制和十六进制。根据整型数据所占内存空间的不同可分为4种类型,如表3.1所示。
表3.1 整型数据的分类(根据所占内存空间的不同分类)

(2)浮点型。浮点型数据可分为两类,如表3.2所示。
表3.2 浮点型数据的分类(根据所占内存空间的不同分类)

(3)字符型。字符型变量用于存储单个字符,占用16bit(2B)的内存空间。定义字符型变量时要使用关键字char,变量名称要使用单引号。
(4)布尔型。布尔型变量又称为逻辑型变量,是通过关键字boolean来定义的。布尔型变量只有“真”和“假”两个取值,分别代表布尔逻辑中的“真”和“假”。布尔型变量在流程控制中常常作为判断条件。
3.3.2 Java的运算符及关键字
1. Java的运算符
运算符主要用于数学函数、一些类型的赋值语句和逻辑比较。
(1)赋值运算符。赋值运算符是一个二元运算符,符号为“=”,其功能是将等号右边的操作数的值赋给等号左边的操作数。例如:

(2)算术运算符。算术运算符如表3.3所示。
表3.3 算术运算符

(3)自增运算符和自减运算符。自增运算符和自减运算符是单目运算符,可以放在变量之前,也可以放在变量之后。变量一般为整型变量。自增运算符或自减运算符的作用是使变量的值增1或减1。放在变量之前的自增运算符或自减运算符,先将变量的值加1或减1,再使用该变量参与表达式的运算;放在变量之后的自增运算符或自减运算符,先使用变量参与表达式的运算,再将该变量的值加1或减1。例如:

(4)比较运算符。比较运算符为二元运算符,用于数值的比较。比较运算符的运算结果是布尔型数据。当运算符对应的关系成立时,运算的结果为真,否则为假。比较运算符共有6个,通常作为判断的依据用于条件语句中,如表3.4所示。
表3.4 比较运算符

(5)逻辑运算符。逻辑运算符如表3.5所示。
表3.5 逻辑运算符

(6)位运算符。位运算符如表3.6所示。
表3.6 位运算符

(7)条件运算符。条件运算符是三目运算符,该运算符有3个操作数,如果布尔表达式的值为真,则返回“表达式1”的值,否则返回“表达式2”的值。条件运算符的格式如下:

2. Java的关键字
Java的关键字用来表示一种数据类型或者表示程序的结构等,关键字不能用于变量名、方法名、类名、包名和参数等。Java的关键字如表3.7所示。
表3.7 Java的关键字

3.3.3 Java的程序结构
1. 顺序结构
如果代码里没有流程控制,那么程序就会按照从上到下的顺序执行,直到程序结束,例如:

2. 分支结构
如果程序具有多个条件,则需要通过条件判断来决定程序的具体工作。通过判断条件来做选择的语句称为选择语句或分支语句。选择语句有if和switch两种。
(1)if语句。if语句使用布尔型表达式或布尔型值作为选择条件,有以下三种结构形式:
① if结构。格式如下:

if后面跟的{}表示一个整体的代码块,称为条件执行体。当条件为真时,执行条件执行体。

② if…else结构。格式如下:

例如:

③ if…else if…else结构。格式如下:

例如:

(2)switch语句。格式如下:

注意:case后面的表达式必须是常量。例如:

3. 循环结构
(1)while循环。格式如下:

while循环的特点是:先判断表达式,若为true则执行循环体,否则跳过循环体。例如:

(2)do…while循环。格式如下:

do…while循环的特点是:先执行一次循环体,再判断表达式,若为真则就执行循环体,否则就跳过循环体。也就是说,do…while是先执行后判断,即使判断条件为假,也会至少循环一次。
(3)for循环。格式如下:

初始化语句:表示对循环进行初始化,只在循环开始时执行一次,定义一个变量并赋值。
布尔型表达式:当布尔型表达式为false时,循环终止;当布尔型表达式为true时,才会执行循环体语句。
循环后操作语句:每次循环后都会调用该语句,一般该语句是递增或递减操作。
例如:

(4)嵌套循环。若外循环的循环次数是m次,在每一次外循环时内循环的循环次数是n次,则总的内循环的循环次数是mn次。使用嵌套循环时应注意以下3点:
① 使用循环嵌套时,内循环和外循环的循环控制变量不能相同。
② 循环嵌套结构的书写最好采用“右缩进”格式,以体现循环层次的关系。
③ 尽量避免太多和太深的循环嵌套结构。
例如:

4. 循环结构控制语句
(1)break语句。break语句用于终止当前所在的循环。注意:break之后的语句不执行,所以不能编写,否则会在编译时报错。例如:

(2)continue语句。continue语句用于跳过当前的循环,进入下一次循环操作。例如:

(3)return语句。return语句用于结束循环所在的方法,循环所在的方法结束了,循环结构也就结束了。由于break、continue、return后面的语句不会执行,所以它们后面不能再跟任何语句,否则会在编译时出错。break和return语句都能结束当前的循环,但如果循环结构之后的语句还得执行,那么就应该使用break语句。例如:
