一、复合语句。
与C语言及其他语言相同,Java 语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”开始,闭括号“}”结束。

在前面的学习中我们已经接触到了这种复合语句。例如,在定义一个类或方法时,类体就是以“{”与“}”作为开始与结束的标记,方法体同样也是以“{”与“}”作为标记。复合语句中的每个语句都是从上到下被执行。复合语句以整个块为单位,能够用在任何一个单独语句可以使用的地方,并且在复合语句中还可以嵌套复合语句。

例如,下面这段代码,在主方法中定义了复合语句块,复合语句块中还可以包含另一复合语句块。

java 复合对象类型判断 java复合语句用什么括号_条件语句

 

在使用复合语句时要注意,复合语句为局部变量创建了一个作用域,该作用域为程序的一部分,在该作用域中某个变量被创建并能够被使用。如果在某个变量的作用域外使用该变量,则会发生错误。例如,在上述代码中,如果在复合语句外使用变量y、z、b将会出现错误,而变量x可在整个方法体中使用。

二、条件语句。
条件语句可根据不同的条件执行不同的语句。条件语句包括if条件语句与switch多分支语句。本节将向读者讲解条件语句的用法。

1.if条件语句。
if条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句。

使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”。如果该表达式返回的结果为true,则执行其后的语句;如果为false,则不执行if条件之后的语句。if 条件语句可分为简单的if条件语句、if.. .else语句和f..else if多分支语句。

    1.简单的if条件语句。
语法如下:

if(布尔型表达式){
         语句序列
}

布尔表达式:必要参数,表示最后返回的结果必须是一个布尔值。它可以是一个 单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。

语句序列:可选参数。可以是一条或多 条语句,当表达式的值为true时执行这些语句。

若语句序列中仅有一- 条语句,则可以省略条件语句中的“{}”。

如果语句序列中只有一条语句,可以采用以下写法:

int a = 100;
       if(a == 100)
     System.out.print("a的值是100");

注意:
虽然if条件语句中的语句序列只有一条语句时,省略“{ }”并无语法错误,但为了增强程成的可读性,最好不要省略。

条件语句后的语句序列省略时,可以保留外面的大括号。也可以省略大括号,然后在末尾添加“如下所示的两种情况都是正确的:

boolean b = false;
if(b);
boolean b = false;
if(b){}

简单的if条件语句的执行过程。

判断手机号码是否存在 。

创建TakePhone类,模拟拨打电话场景,如果电话号码不是84972266,则提示拨打的号码不存在。

java 复合对象类型判断 java复合语句用什么括号_服务器_02

 

java 复合对象类型判断 java复合语句用什么括号_java_03

2.if...else语句。
if..else语句是条件语句中最常用的一种形式, 它会针对某种条件有选择地做出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。语法如下:

if(条件表达式) {
语句序列1
} else{
语句序列2
}

if后面“()”内的表达式的值必须是boolean型的。如果表达式的值为true,则执行紧跟if语句的复合语句;如果表达式的值为false,则执行else后面的复合语句。f.else 语句的执行过程。

java 复合对象类型判断 java复合语句用什么括号_servlet_04

 

java 复合对象类型判断 java复合语句用什么括号_servlet_05

 

 同简单的if条件语句一样,如果f..else语句的语句序列中只有一条语句 (不包括注释),则可以省略该语句序列外面的“{ }”。有时为了编程的需要,else 或if后面的“{ }”中可以没有语句。

使用f..clse语句校验密码。

在项目中创建Login类,在主方法中定义变量,并通过使用if..else语句判断变量的值来决定输出结果。

java 复合对象类型判断 java复合语句用什么括号_条件语句_06

 

java 复合对象类型判断 java复合语句用什么括号_条件语句_07

   3.if...else if多分支语句。
if..else if多分支语句用于针对某一事件的多 种情况进行处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件 则执行另一种处理”。 语法如下:

if{条件表达式1){
语句序列1
} else if(条件表达式2){
语句序列2
}
…
else if(条件表达式n){
语句序列n
}

条件表达式1~条件表达式n:必要参数。可以由多个表达式组成,但最后返回的结果一 定要为boolean类型。

语句序列:可以是一条或多条语句,当条件表达式1的值为true时,执行语句序列1;当条件表达式2的值为true时,执行语句序列2,以此类推。当省略任意一组语句序列时, 可以保留其外面的“{}”,也可以将“{}”替换为“;"。if..elseif多分支语句的执行过程如图所示。

java 复合对象类型判断 java复合语句用什么括号_servlet_08

使用f..else if语句实现饭店座位分配。

创建Restaurant类,声明整型变量count表示用餐人数,根据人数安排客人到4人桌、8人桌或包厢用餐。

java 复合对象类型判断 java复合语句用什么括号_servlet_09

java 复合对象类型判断 java复合语句用什么括号_servlet_10

 

java 复合对象类型判断 java复合语句用什么括号_服务器_11

 

2.switch多分支语句。
在编程中,一个常见的问题就是检测一个变量是否符合某个条件,如果不符合,再用另个值 来检测,以此类推。当然,这种问题使用if条件语句也可以完成。例如,使用计语句对考试成绩进行评估,关键代码如下:

if(grade == ‘A’){
          System. out printn("真棒");
}
if(grade == ‘B’){
          System. out printn(“做得不错");
}

这个程序显得比较笨重,程序员需要测试不同的值来给出输出语句。在Java中,可以用switch语句将动作组织起来,以一个较简单明了的方式来实现 “多选一” 的选择。语法如下:

switch(表达式) {
case常量值1:
    语句块 1
       [break;]
…
case常量值n:
        语句块n
        [break;]
default:
          语句块n+1;
          [break;]
}

switch语句中表达式的值必须是整型、字符型、字符串类型或枚举类型,常量值1~n的数据类型必须与表达式的值的类型相同。

switch 语句首先计算表达式的值,如果表达式的计算结果和某个case后面的常量值相同,则执行该case语句后的若干个语句直到遇到break语句为止。此时,如果该case语句中没有break语句,将继续执行后面case 中的若干个语句,直到遇到break 语句为止。若没有一个常 量的值与表达式的值相同,则执行default后面的语句。default 语句为可选的,如果它不存在,且switch语句中表达式的值不与任何case的常量值相同,switch 语句则不做任何处理。

注意:(1)同一个switch语句,case的常量值必须互不相同。(2)在switch语句中, case语句后常量表达式的值可以为整数,但绝不可以是非整数的实数。例如,下面的代码就是错误的:case 1.1:

switch语句的执行过程如图4.4所示。

java 复合对象类型判断 java复合语句用什么括号_服务器_12

使用switch语句为考试分数分级

创建Grade类,使用Scanner 类在控制台输入分数,然后用switch多分支语句判断输入的分数属于哪类成绩。10分和9分属于优,8分属于良,7分和6分属于中,5分、4分、3分、2分、1分以及0分均属于差。

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_13

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_14

 

java 复合对象类型判断 java复合语句用什么括号_java_15

 

java 复合对象类型判断 java复合语句用什么括号_java_16

 

java 复合对象类型判断 java复合语句用什么括号_服务器_17

 

java 复合对象类型判断 java复合语句用什么括号_条件语句_18

 

三、循环语句。
循环语句就是在满足一定条件的情况下反复执行某一个操作的语句。lava 中提供了3种常用的循环语句,分别是while循环语句、d..while 循环语句和for循环语句,下面分别进行讲解。

1.while循环语句。
while语句也称条件判断语句,它的循环方式为利用- -个条件来控制是否要继续反复执行这个语句。语法如下:

while (条件表达式) {
语句序列
}

当条件表达式的返回值为真时,则执行“{}”中的语句,当执行完“好”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。while 循环语句的执行过程如图4.9所示。

java 复合对象类型判断 java复合语句用什么括号_服务器_19

计算1~ 1000的相加结果

创建GetSum类,在主方法中通过while循环计算1~1000相加的和并输出。

java 复合对象类型判断 java复合语句用什么括号_条件语句_20

                                        

java 复合对象类型判断 java复合语句用什么括号_servlet_21

  

java 复合对象类型判断 java复合语句用什么括号_java_22

2.do...while循环语句。
do...while循环语句与while循环语句类似,它们之间的区别是while语句为先判断条件是否成立再执行循环体,而do... while循环语句则先执行一次循环后, 再判断条件是否成立。也就是说,do...while循环语句“{}”中的程序段至少要被执行一次。语法如下:

do {
语句序列
} while (条件表达式);

do... while语句与while语句的一个明显区别是,do...while 语句在结尾

处多了一个分号。根据do..while循环语句的语法特点总结出的do...while循环语句的执行过程,如图4.10 所示。

java 复合对象类型判断 java复合语句用什么括号_servlet_23

使用do... while语句进行用户登录验证

创建LoginService 类,首先提示用户输入6位密码,然后使用Scanner扫描器类获取用户输入的密码,最后进入do...while循环进行判断,如果用户输入的密码不是“931567",则让用户反复输入,直到输入正确密码为止。

java 复合对象类型判断 java复合语句用什么括号_条件语句_24

java 复合对象类型判断 java复合语句用什么括号_服务器_25

 

 

 

 

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_26

3.for循环语句。
for 循环是Java程序设计中最有用的循环语句之一 .一个for循环可以用来重复执行某条语句,直到某个条件得到足。街指环有两种语句,一种是传统的for语句,种foreach 语句,下面分别介绍这两种语句的使用方法。

1.for语句。
传统的or语句中有3个表达式,其语法如下:

for表达式1;表达式2;表达式3){
语句序列
}

表达式1:初始化表达式,负责完成变量的初始化。

表达式2:循环条件表达式,值为boolean型的表达式,指定循环条件。等同于while循环里的表达式。

表达式3: 每次循环结束后执行的语句,通常用来改变循环条件。

for循环语句的执行过程如图4.12所示。

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_27

在执行for 循环时,首先执行表达式1,完成某一变量的初始化工作:下一步判断表达式2的值,若表达式2的值为true, 则进入循环体:在执行完循环体后紧接着计算表达式3,这部分通常是增加或减少循环控制变量的一一个表达式。这样一-轮循环就结束了。第二轮循环从计算表达式2开始,若表达式2返回true,则继续循环,否则跳出整个for语句。

使用for循环计算2~ 100所有偶数之和。创建Crculale类,编写程序,使用for 循环语句计算2~ 100所有偶数的和并输出。

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_28

 

java 复合对象类型判断 java复合语句用什么括号_服务器_29

java 复合对象类型判断 java复合语句用什么括号_java_30

 

2.foreach

foreach语句是for语句的特殊简化版本,不能完全取代for语句,但任何foreach 语句都可以改写为for语句版本。foreach 并不是一个 关键字,习惯上将这种特殊的for语句格式称为foreach语句。foreach语句在遍历数组等方面为程序员提供了很大的方便(本书将在第5章对数组进行详细的介绍)。

语法如下:

for(元素类型x:遍历对象obj){
引用了x的java语句;
}

foreach语句中的元素变量x,不必对其进行初始化。下面通过简单的例子来介绍foreach语句是如何遍历一-维数组的。

[例4.8]使用foreach语句遍历整型数组(实例位置:资源包\TMs1418 )

创建类Repetion在主方法中定义一维数组,并用foreach语句遍历该数组。

java 复合对象类型判断 java复合语句用什么括号_服务器_31

java 复合对象类型判断 java复合语句用什么括号_条件语句_32

 

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_33

 

 

四、循环控制。
循环控制制包含两方面的内容,方面是控制循环变量的变化方式, 另方面是控制循环的跳转,基中断循环,光制腊环的跳转需要用到break和continue两个关键字, 这两条跳转语句的跳转效果不问, break语句控制很结环,continue 语句是执行下次循环。

1.break语句。
使用breal语句可以跳出 swich结构。在循环结构中, 同样也可用brek语句跳出当前循环体, 从而中断当前循环。

在3种循环语句中使用break语句的形式如图所示。

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_34

输出1~ 20出现的第一个偶数 

创建BreakTest类,循环输出1 二20 的偶数值,在遇到第一个偶数时, 使用break语句结束循环。

 

java 复合对象类型判断 java复合语句用什么括号_条件语句_35

java 复合对象类型判断 java复合语句用什么括号_条件语句_36

 

java 复合对象类型判断 java复合语句用什么括号_条件语句_37

 

注意:须环长套情况下,brek语句将只会使程序流程跳出包含它的最内层的循环结构,即只跳出层循环。

如果想让break跳出外层循环,Java提供了“标签的功能,语法如标签名:

循环体{
          break标签名;
}

使用标签让break结束外层循环

创建Basidsesed类,在该类中写两层for循环,第层for语句循环3次,第二层for语句循环5次。当第二层for语句循环至第4次时,强行用break 中断循环。输出程序执行时外层循环和内层循环各循环了多少次。

java 复合对象类型判断 java复合语句用什么括号_条件语句_38

 

 

java 复合对象类型判断 java复合语句用什么括号_服务器_39

 

java 复合对象类型判断 java复合语句用什么括号_servlet_40

从这个结果可以看出,当j的值等于4时,直接结束外层循环,i的 值不再增加。

2.continue语句。

continue语句是针对break语句的补充。continue 不是立即跳出循环体,而是跳过本次循环,回到环的条件测试部分,重新开始执行循环。 在for循环语句中遇到continue后,首先执行循环的增量部子,然后进行条件测试。 在while和do... while循环中,continue 语句使控制直接回到条件测试部分。在3种循环语句中,使用continue语句的形式如图4.14所示。

java 复合对象类型判断 java复合语句用什么括号_java_41

输出1~20的奇数

创建ContinueTest类,编写一个for循环从1循环至20,如果当

java 复合对象类型判断 java复合语句用什么括号_服务器_42

java 复合对象类型判断 java复合语句用什么括号_java 复合对象类型判断_43

前循环的次数为偶数,则使用continue语句跳过循环。

java 复合对象类型判断 java复合语句用什么括号_服务器_42

 

java 复合对象类型判断 java复合语句用什么括号_java_45

 

 与break语句一样,continue也支持标签功能,语法如下:

标签名:

循环体{
            continue标签名;
}

for循环内部嵌套一个while循环

java 复合对象类型判断 java复合语句用什么括号_服务器_46

do...while循环内部嵌套一个for循环

 

java 复合对象类型判断 java复合语句用什么括号_java_47