Java语句及其控制结构

import java.applet.Applet; //包引入语句
public class GetSquare extends Applet;//声明类语句

1. 表达式语句

int k, i=3, j=4;
k=i+j;
System.out.println(″k=″+k);

2. 复合语句

class Block {
public static void main(String args[]) {
  int k, i=3, j=4;
  k=i+j;
  System.out.println(″k=″+k);
  {
  float f;
  f=j+4.5F;
  i++;
  System.out.println(″f=″+f);
  }
  System.out.println(″i=″+i);
}
}

选择语句
利用选择语句结构可以根据条件控制程序流程,改变程序执行的顺序。

if语句
if语句的语法格式为:

if (条件表达式)
s1语句;

这是最简单的单分支结构。条件表达式的值为true,就执行s1语句,否则就忽略s1语句。s1语句可以是复合语句。

if…else语句

if语句通常与else语句配套使用,形成二分支结构。它的语法格式为:

if (条件表达式)
s1语句;
else
s2语句;

当条件表达式的值为true,就执行s1语句,忽略else和s2语句;条件表达式的值为false,程序忽略s1语句,执行else后面的s2语句。s1和s2都可以是复合语句。

if…else复合结构

对于复杂的情况,可以嵌套使用if…else语句。它的语法格式为:

if (条件表达式1)
s1语句;
else if (条件表达式2)
s2语句;
else
s3语句;

在这里依次计算条件表达式,如果某个条件表达式的值为true,就执行它后面的语句,其余部分被忽略;所有表达式的值都为false,就执行最后一个else后的s3语句。s1、s2和s3都可以是复合语句。

switch开关语句
虽然嵌套的条件语句可实现多个分支处理,但嵌套太多时容易出错和混乱,这时可以使用开关语句switch处理。实际上开关语句switch也是一种if…else结构,不过它使你在编程时很容易写出判断条件,特别是有很多条件选项的时候。

开关语句switch的语法格式:
switch (表达式) {
case 常量1:
  语句1;
  break;

case 常量2:
  语句2;
  break;
......
default:
  语句n;
}
其中switch、case、default是关键字,default子句可以省略。开关语句先计算表达式,然后将表达式值与各个常量比较,如果表达式值与某个常量相等,就执行该常量后面的语句;如果都不相等,就执行default下面的语句。如果无default子句,就什么都不执行,直接跳出开关语句。

使用开关语句时,注意以下几点:
• case后面的常量必须是整数或字符型,而且不能有相同的值;
• 通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。否则,在第一个满足条件case后面的所有语句都会被执行,这种情况叫做落空。

循环语句

循环可使程序根据一定的条件重复执行某一部分程序代码,直到满足终止循环条件为止。
Java中提供的循环语句有: 确定次数循环(for)、条件循环(while)、先执行后判定循环(do)。

for循环语句

如果希望程序的一部分内容按固定的次数重复执行,通常可以使用for循环。for循环采用一个计数器控制循环次数,每循环一次计数器就计数,直到完成给定的循环次数为止。

for循环的语法格式为:

for (表达式1; 表达式2; 表达式3)
循环体

其中表达式1可以给出计数器的初值,是一个赋值语句;表达式2指出循环结束条件,是一个逻辑表达式;表达式3指出计数器每次的增量,是一个赋值语句。

注意: 计数器可在for语句之前定义,也可在循环括号中定义。计数器增量为1时常写成增量运算的形式,以加快运算速度。根据需要,增量可以大于或小于1。增量计算也可以放在循环体中进行,即把表达式3移到循环体内的适当位置,原位置为空。
使用循环语句时常常会遇到死循环的情况,也就是无限制地循环下去。所以在使用for循环时,要注意初值、终值和增量的搭配。终值大于初值时,增量应为正值,终值小于初值时,增量应为负值。编程时必须密切关注计数器的改变,这是实现正常循环避免陷入死循环的关键。

while循环语句
while循环不像for循环那么复杂,while循环只需要一个条件判断语句,便可以进行循环操作。

while循环的语法格式为:

while (条件表达式) 
循环体

其中while是关键字。每次循环之前都要计算条件表达式,其值为true时,就执行一次循环体中的语句,然后再计算条件表达式,决定是否再次执行循环体中的语句;如果条件表达式的值为false时,就跳出循环体,执行循环体下面的语句。

注意: while循环中的条件表达式是逻辑表达式,所以循环体中一定要有改变条件表达式值的语句,使条件表达式的值有机会变为false,否则会陷入死循环。

do…while循环语句
do…while循环与while循环相反,是先执行循环体中的语句,再计算while后面的条件表达式,若条件表达式值为false则跳出循环;否则继续下一轮循环。

有些情况下,不管条件表达式的值是为true还是false,都希望把指定的语句至少执行一次,那么就应使用do…while循环。

do…while循环的语法格式为:

do {
循环体
} while (条件表达式);

其中do、while是关键字。程序首先执行do下面的循环体,然后计算while后面条件表达式的值,如果其值为true,则重复执行循环体;否则,就结束循环。

与while循环相同,do循环在循环体中也一定要有改变条件表达式值为false的语句,否则会陷入死循环。do…while循环控制并不是很常用,但有时却非常重要,使用时特别注意不要忘记了while语句结尾处的分号“;”。

循环语句嵌套
ex:做个例子 是累计求和的。

public class Sum1 {
public static void main(String args[]) {
  int n=10, sum=0;
  while (n>0) {
  sum=0;
  for (int i=1; i<=n; i++)
    sum+=i;
  System.out.println(″前″+n+″个数的总和为: ″+sum);
  n--;
  }
}
}

循环语句小结
一个循环一般应包括4部分内容。
(1) 初始化部分: 用来设置循环的一些初始条件,计数器清零等。
(2) 循环体部分: 这是反复被执行的一段代码,可以是单语句,也可以是复合语句。
(3) 迭代部分: 这是在当前循环结束,下一次循环开始时执行的语句,常用来使计数器加1或减1。
(4) 终止部分: 通常是一个布尔表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。

跳转语句
跳转语句可以无条件改变程序的执行顺序。Java支持3种跳转语句: break、continue和return。

break语句

break语句提供了一种方便的跳出循环的方法。使用break语句可以立即终止循环,跳出循环体,即使循环没有结束也如此。

break语句的使用示例,输出结果如图3.10所示。

class B {
public static void main(String args[]) {
  boolean test=true;
  int i=0;
  while (test) {
  i=i+2;
  System.out.println(″i=″+i);
  if (i>=10)
    break;
  }
  System.out.println(″ i为″+i+″时循环结束″);
}
}


带标号的break语句

标号是标记程序位置的标识符。break语句只能跳转到循环语句下面的第一条语句上,而带标号的break语句可直接跳转到标号处。正常的break只退出一重循环,如果要退出多重循环,可以使用带标号的break语句。它的语法格式为:

标识符:
…
break 标识符;

做个例子说明

运行该工程,正常情况下可从键盘接受16个输入字符,但当输入b按回车时,break lab1语句就会结束二重循环。

class B1 {
public static void main(String args[]) throws java.io.IOException {
  char ch;

  lab1: // 此处为标号标识符
  for (int i=0; i<4; i++)
  for (int j=0; j<4; j++) {
    ch=(char)System.in.read();
    System.in.skip(2);
    if (ch==′b′)
    break lab1;//跳到标号标识符处
    if (ch==′c′)
    System.out.println(″继续″);

  }
  System.out.println(″结束两重循环″);
}
}


continue语句
continue语句只能用在循环结构中,它跳过循环体中尚未执行的语句,重新开始下一轮循环,从循环体第一个语句开始执行。

下面的可以输出1~9中除6以外所有偶数的平方值

class C2 {
public static void main(String args[]) {
  for (int i=2;i<=9;i+=2) {
  if (i==6)
    continue; 
  System.out.println(i+″ 的平方 = ″+i*i); }
}
}

带标号的continue语句
Java也支持带标号的continue语句,它通常用在嵌套循环的内循环中,可以用标号标出想跳到哪一条语句继续重复执行程序。其语法格式为:

标识符:
…
continue 标识符;

带标号的continue语句的使用

class C3{
public static void main(String args[]) {
  lab1:
  for (int i=1; i<=3; i++)
  for (int j=1; j<=3; j++) {
    System.out.println(″i:″+i+″ j:″+j);
    if (i+j>3) {
    System.out.println(″Continue″);
    continue lab1;
    }
    System.out.println(″i=″+i+″  j=″+j);
  }
}
}


求100~200间的所有素数。用嵌套的for循环做

public class Find {
public static void main(String args[]) {
  System.out.println(″ ** 100~200间的所有素数 **″);
  int n=0;

  outer:
  for (int i=101; i<200; i+=2) {
  int k=15;
  for (int j=2; j<=k; j++)
    if (i%j==0)
    continue outer;
  System.out.print(″ ″+i);
  n++;
  if (n<10)
    continue;

  System.out.println();
  n=0;
  }
  System.out.println();
}
}


return语句
return语句用于方法的返回上,当程序执行到return语句时,终止当前方法的执行,返回到调用这个方法的语句。return语句通常位于一个方法体的最后一行,有带参数和不带参数两种形式,带参数形式的return语句退出该方法并返回一个值。

当方法用void声明时,说明不需要返回值(即返回类型为空),应使用不带参数return语句。不带参数的return语句也可以省略,当程序执行到这个方法的最后一条语句时,遇到方法的结束标志}就自动返回到调用这个方法的程序中。

带参数的return语句格式为:

return 表达式;

当程序执行到这个语句时,首先计算“表达式”的值,然后将表达式的值返回到调用该方法的语句。返回值的数据类型必须与方法声明中的返回值类型一致,可以使用强制类型转换来使类型一致。

带参数的return语句的使用

class CircleArea {
final static double PI=3.14159;
public static void main(String args[]) {
  double r1=8.0, r2=5.0;
  System.out.println(″半径为″+r1+″的圆面积=″+area(r1));
  System.out.println(″半径为″+r2+″的圆面积=″+area(r2));
}
static double area(double r) {
  return (PI*r*r);
}
}

Feedback

# re: Java基础知识(三)语句及其控制结构  回复  更多评论   

2008-12-08 10:19 by 杨爱友
加油,你的耐心大大滴,哈哈!

# re: Java基础知识(三)语句及其控制结构  回复  更多评论   

2008-12-08 19:47 by 枫舞星萍
-.- 真的很枯燥 为给某潴看 不过这三章 基本语法差不多够了@杨爱友

# re: Java基础知识(三)语句及其控制结构  回复  更多评论   

2009-07-07 12:52 by 云无迹
很清楚,齐全。

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 4, comments - 4, trackbacks - 0, articles - 0

Copyright © 枫舞星萍