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);
}
}