程序设计中的三大控制语句为,即顺序,分支、循环。java程序通过控制流语句来管理程序流,完成一定的任务。
- 顺序
可以理解为从上到下依次执行的代码 - 分支语句
if
switch - 循环语句
while
do-while
for - 跳转语句
break、continue、return、throw
一、分支语句
1.1 if 语句
if结构
if (条件表达式){
语句组
}
if-else结构
if(条件表达式){
语句组1
}else{
语句组2
}
if -else if…-else 结构
if(条件表达式1){
语句组1
}else if(条件表达式2){
语句组2
}else if(...){
...
}else{
}
1.2 switch 语句
switch (表达式) {
case 值1:
语句组1
case 值2:
语句组2
case 值3:
语句组3
...
case 判断值n:
语句组n
default:
语句组n+1
}
1. switch语句中的“表达式”计算结果只能是 int、byte、short、char。不能是long,更不能是其他的类型。
2. 每个case后面只能 跟个 int 、byte、 short、 char类型的常量。
3. 在执行case语句时,只有遇到break才跳出switch。
4. 当所有的case都没有执行时就执行default的语句
int testScore = 75;
char grade;
switch(testScore/10){
case 9:
grade ="优";
break;
case 8:
grade = "良";
break;
case 7:
case 6:
grade = "中";
break;
default:
grade = "差";
}
System.out.println("Grade = "+ grade);
输出的结果为:
Grade = 中
二、循环语句
在java中支持三种循环构造类型:while、do-while、for
2.1 while
while(循环条件){
语句组
}
public class Demo5 {
public static void main(String[] args) {
int i = 0;
while (i * i <100000) {
i++;
}
System.out.println("i=" + i);
System.out.println("i * i="+ (i *i));
}
}
结果为:
i=317
i * i=100489
注意:while条件语句中只能写一个表达式,而且只一个布尔类型表达式,如果循环体中需要循环变量,就必须在while语句之前对循环变量进行初始化。
2.2 do-while语句
先执行再判断(不管循环条件是否满足,都会执行一次循环体,然后再判断循环条件。如果条件满足则执行循环体,不满足则停止循环。)
do{
语句组
}while(循环条件);
public class Demo5 {
public static void main(String[] args) {
int i = 0;
do {
i++;
}while(i *i<100000);
System.out.println("i=" + i);
System.out.println("i * i="+ (i *i));
}
}
结果为:
i=317
i * i=100489
2.3 for语句
for(初始化;循环条件;迭代){
语句组
}
for(;;){
...
}
提示:初始化、循环条件、迭代部分都可以为空语句(但是分号不能省略),三者均为空的时候,相当与一个无限循环。
在初始化部分和迭代部分,可以使用逗号语句来进行多个操作
for(x = 0,y=10;x<y; x++,y--){
...
}
for语句的执行过程:
首先会执行初始化语句,它的作用是初始化循环变量和其他变量,然后程序会判断循环条件是否满足,如果满足,则继续执行循环体并计算迭代语句,之后再判断循环条件,如此反复,知道判断循环条件不满足时跳出循环。
for循环执行流程图:
2.4 for-each语句
专门用于遍历集合的for循环
public class Demo5 {
public static void main(String[] args) {
int[] num = {1,2,3,4,5,6,7};
for(int item:num) {
System.out.println("num is "+ item);
}
}
}
item保存了集合中的元素,for-each 语句将集合中的元素一一取出来,并保存到item中
结果为:
num is 1
num is 2
num is 3
num is 4
num is 5
num is 6
num is 7
三、跳转语句
跳转语句能够改变程序执行顺序,可以实现程序的跳转。java中有四种跳转语句:break、continue、throw、return
3.1 break语句
break表示退出本循环,不再执行
有两种方式:
break; //不带标签
break label; //带标签,label 是标签名
不带标签的break语句使程序跳出所在层的循环体,而带标签的break语句使程序跳出标签指示的循环体。
不带标签的break;
public class Demo5 {
public static void main(String[] args) {
int[] num = {1,2,3,4,5,6,7};
for(int i = 0;i<num.length;i++) {
if(i==3) {
break;
}
System.out.println("count is:"+i);
}
}
}
结果为:
count is:0
count is:1
count is:2
带标签的 break;
public class Demo5 {
public static void main(String[] args) {
label1:for (int x=0;x<5;x++) {
for(int y=5;y>0;y--) {
if(y==x) {
break label1;
}
System.out.printf("(x,y)=(%d,%d)",x,y);
System.out.println();
}
}
}
}
结果为:
(x,y)=(0,5)
(x,y)=(0,4)
(x,y)=(0,3)
(x,y)=(0,2)
(x,y)=(0,1)
(x,y)=(1,5)
(x,y)=(1,4)
(x,y)=(1,3)
(x,y)=(1,2)
3.2 continue语句
continue语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。
有两种方式:
continue;
continue label;
不带标签的continue;
public class Demo5 {
public static void main(String[] args) {
int[] num = {1,2,3,4,5,6,7};
for(int i = 0;i<num.length;i++) {
if(i==3) {
continue;
}
System.out.println("count is:"+i);
}
}
}
count is:0
count is:1
count is:2
count is:4
count is:5
count is:6
带标签的continue;
public class Demo5 {
public static void main(String[] args) {
label2:for (int x=0;x<5;x++) {
for(int y=5;y>0;y--) {
if(y==x) {
break label2;
}
System.out.printf("(x,y)=(%d,%d)",x,y);
System.out.println();
}
}
}
}
结果为:
(x,y)=(0,5)
(x,y)=(0,4)
(x,y)=(0,3)
(x,y)=(0,2)
(x,y)=(0,1)
(x,y)=(1,5)
(x,y)=(1,4)
(x,y)=(1,3)
(x,y)=(1,2)
补充:PrintStream中常用的打印方法:
print(String s):打印字符串不换行。
println(String x):打印字符串换行。
printf(String format,Object…args):使用指定输出格式,打印任何长度的数据,但不换行。