语句概述
Java 里的语句可分为以下五类
方法调用语句,如
System.out.println(" Hello")
表达式语句 由一个表达式构成一个语句,最典型的是赋值语句.
x=23
一个表达式的最后加上一个分号就构成了一个语句.分号是语句不可缺少的部分.
复合语句 可以用{ }把一些语句括起来构成复合语句.
{
z=23+x; System.out.println("hello");
}
控制语句.
packa9e 语句和 import 语句.
packa9e 语句和 import 语句和类,对象有关,将在第 4 章讲解.
Java 语言的控制语句
Java 语言的控制语句有 2 种类型,即条件语句,和 switch 开关语句.
条件控制语句
条件语句可分为 3 种. a if 语句
if 语句的一般形式
if(表达式)
{
若干语句
}
真 假
表达式
{若干语句}
if 后面 内的表达式的值必须是 boolean 类型,当值为 true 时,则执行紧跟着的复合
语句 如果表达式的值为 false,则执行程序中 if 语句后面的其他语句.复合语句如果只有一 个语句,{ }可以省略不写,但为了增强程序的可读性最好不要省略.在下面的例子中,我们将变
量 a,b,c 内存中的数值按大小顺序进行互换.
例子 3
public class Example3_3
{ public static void main(String args[])
{ int a=9,b=5,c=7,t;
if(a>b)
{ t=a; a=b; b=t;
}
if(a>c)
{ t=a; a=c; c=t;
}
if(b>c)
{ t=b; b=c; c=t;
} System.out.println("a="+a+",b="+b+",c="+c);
}
}
b if-else 语句.
if-else 语句的一般形式
真 假
表达式
{若干语句} {若干语句}
if(表达式)
{ 若干语句
}
else
{
若干语句
}
if 后面( )内的表达式的值必须是 boolean 型的.如果表达式的值为 true,则执行紧跟着的 复合语句 如果表达式的值为 false,则执行 else 后面的复合语句.复合语句是由{ }括起来的 若干个语句,如图 3.4 所示.
下列是有语法错误的 if-else 语句,
if(x>0) y=10; z=20; else
y=-100;
正确的写法是
if(x>0)
{y=10;
z=20;
}
else y=100;
注 if 和 else 后面的复合句里如果只有一个语句,{ }可以省略不写,但为了增强
程序的可读性最好不要省略.
有时为了编程的需要,else 或 if 后面的大括号里可以没有语句.
例子 3
public class Example3_4
{ public static void main(String args[])
{int math=65 ,english=85;
if(math>60)
{
System.out.println("数学及格了");
}
else
{ System.out.println("数学不及格");
}
if(english>90)
{
System.out.println("英语是优");
}
else
{
System.out.println("英语不是优");
}
if(math>60&&english>90)
{ System.out.println("英语是优,数学也及格了");
}
System.out.println("我在学习控制语句");
}
}
if 语句的扩充形式
if(表达式 1)
语句 1
else if(表达式 2)
语句 2
… …
else if(表达式 n)
语句 n
表达式 1false
表达式 2 false
… 表达式 n
false
true true
语句 1 语句 2
… true
语句 n
switch 开关语句
switch 语句是多分支的开关语句,它的一般格式定义如下
switch(表达式)
{
case 常量值 1
若干个语句
break case 常量值 2
若干个语句
break
… … …
case 常量值 n 若干个语句 break
default
若干语句
}
switch 语句中表达式的值必须是整型或字符型 常量值 1 到常量值 n 必须也是整型或 字符型.switch 语句首先计算表达式的值,如果表达式的值和某个 case 后面的常量值相同,就 执行该 case 里的若干个语句直到碰到 break 语句为止.若没有一个常量与表达式的值相同, 则执行 default 后面的若干个语句.其中 default 是可有可无的,如果它不存在,并且所有的常 量值都和表达式的值不相同,那么 switch 语句就不会进行任何处理.
需要注意的是 在同一个 switch 语句中,case 后的常量值必须互不相同.下面的例子
出现了 switch 语句.
例子 5
import java.applet.*;import java.awt.*;
public class Example3_5 extends Applet
{ public void paint(Graphics g)
{ int x=2,y=1;
switch(x+y)
{case 1 :
g.setColor(Color.red);g.drawString("i am 1",5,10);
break;
case 2:
g.setColor(Color.blue); g.drawString("i am 2",5,10);
break;
case 3:
g.setColor(Color.green); g.drawString("i am 3",5,10);
break;
default: g.drawString("没有般配的",5,10);
}
}
}
循环语句
for 循环语句
for 语句是 java 程序设计中最有用的循环语句,for 语句的格式如下
for (表达式 1 表达式 2 表达式 3)
{
若干语句
}
for 语句中的复合语句 {若干语句},称为循环体.
² 表达式 1 负责完成变量的初始化.
表达式式 2 是值为 boolean 型的表达式,称为循环条件.
表达式 3 用来修整变量,改变循环条件.
for 语句的执行过程是这样的 首先计算表达式 1,完成必要的初始化工作 再判断表达式 2 的值,若表达式 2 的值为 true,则执行循环体 执行完循环体之后紧接着计算表达式 3,以便改 变循环条件,这样一轮循环就结束了.第二轮循环从计算表达式 2 开始,若表达式 2 的值仍为 true 则继续循环,否则跳出整个 for 语句执行后面的语句,如图 3.6 所示.
例子 6 求从 1 加到 100 的和
import java.applet.*;import java.awt.*;
public class Example3_6 extends Applet
{ public void paint(Graphics g)
{ int sum=0;
for(int i=1;i<=100;i++)
{ sum=sum+i;
}
g.drawString("sum= "+sum,10,20);
}
true
表达式1
表达式2
循环体
表达式3
false
}
例子 7 求 10 的阶乘
import java.applet.*;import java.awt.*;
public class Example3_7 extends Applet
{ public void paint(Graphics g)
{ long jiecheng=1;
for(int i=10;i>=1;i--)
{ jiecheng=jiecheng*i;
}
g.drawString("10 的阶乘是 "+jiecheng,10,20);
}
表达式
true
false
}
while 循环
一般格式
{若干语句}
while 循环语句
while(表达式)
{
若干语句
}
do-while 循环.
一般格式
do
{
若干语句
true
{
若 干语
表 达
false
}
while(表达式);
do-while 循环
当{ }中只有一条语句时,大括号{}可以省略,但最好不要省略,以便增加程序的可读性.
注 do-while 循环和 while 循环的区别是 do-while 的循环体至少被执行一次,如图
下面的例子 8 用 while 语句计算 1+1/2!+1/3!+1/4! … 的前 20 项和.
例子 8
class Example3_8
{ public static void main(String args[])
{ double sum=0,a=1;int i=1;
while(i<=20)
{ a=a*(1.0/i); sum=sum+a; i=i+1;
} System.out.println("sum="+sum);
}
}
在循环体中使用语句 break 和语句 continue
在一个循环中,比如循环 50 次的循环语句中,如果在某次循环体的执行中执行了 break 语句,那么整个循环语句就结束.如果在某次循环体的执行中执行了 continue 语句,那么本次 循环就结束,即不再执行本次循环中循环体中 continue 语句后面的语句,而转入进行下一次 循环.
例子 9
class Example3_9
{ public static void main(String args[])
{ int sum=0,i,j;
for( i=1;i<=10;i++) //计算 1+3+5+7+9.
{ if(i%2==0)
continue;
sum=sum+i;
} System.out.println("sum="+sum);
for( j=2;j<=50;j++) //求 50 以内的素数
{ for( i=2;i<=j/2;i++)
{if(j%i==0)
break;
}
if(i>j/2)
{System.out.println(""+j+"是素数");
}
}
}
}
习 题 三
1 |
分别编写一个应用程序和小应用程序求 1!+2!+…+20!. |
|
2 |
编写一个小应用程序求 100 以内的全部素数. |
|
3 |
分别用 do-while 和 for 循环计算 1+1/2!+1/3!+1/4!… |
… 的前 20 项和. |
3 一个数如果恰好等于它的因子之和,这个数就称为”完数”.分别编写一个应用程序和小
应用程序求 1000 之内的所有完数.
来源:oschina
链接:https://my.oschina.net/PROGRAMB/blog/3171770