流程控制(Java自我进阶笔记三)
文章目录
前言
做任何事都要遵循一定的原则。程序设计也是如此,需要有流程 控制语言与用户的交流,并根据用户的输入决定程序要做什么怎么做。需要流程控制来实现用户的目的。如果没有流程控制语句那么整个系统会按照线性的顺序来执行,不能根据用户的输入决定执行的序列。
本文将讲述java 的流程控制,包含if,else,switch,while,do…while,for,foreach的意义以及用法
一、复合语句是什么?
java的复合语句是以整个块区为单位的语句,又称为块语句,由{开始到}结束。
在使用复合语句时需要注意,块语句中定义的变量的有效范围仅在块语句中。在块语
句外使用则会报错(在复合语句之外没有重名的变量下)
二、条件语句
1.1 if条件语句
语法如下
if(布尔表达式){
语句序列;
}
布尔表达式:布尔表达式是必要参数,布尔表达式最后的值必须是一个布尔值,可以是一个单纯的布尔变量或常量,也可以是使用关系或者布尔运算符的表达式
语句序列 :可选参数,当布尔表达式为true时,执行语句序列。可以是一条或者多条语句。(若只有一条语句,可以省略{})(如果条件满足,你希望它进行的操作)
注意语句序列是可选参数如果没有时,{}可以省略,在后面加分号即可,但是不建议省略为了增强程序的可读性
boolean b=true;
if(b);
if(b){}
if使用举例
int a=250;
if(a==250)//如果a的值等于250会返回true,为假会返回false为布尔值
{
System.out.println("a的值是100");//语句序列,如果为真,你希望进行的操作
}
if语句实例
package study;
import java.io.*;
public class Getif {
public static void main(String args[])
{
int x=45;
int y=12;
if(x>y) {
System.out.println("变量x大于变量y");
}
if(x<y)
{
System.out.println("变量y大于变量x");
}
}
}
1.2 if…else语句
如果布尔表达式为true则执行if中的语句序列,如果为flase则执行else中的语句序列
语法如下:
if(表达式)
{
若干语句
}
else
{
若干语句
}
if else 省略和if语句省略类似。
实例
package study;
import java.io.*;
public class Getifelse {
public static void main(String args[]) {
int math=56;
int java=100;
if(math>60) {
System.out.println("数学及格了");
}else {
System.out.println("数学没及格");
}
if(java>60) {
System.out.println("60分万岁");
}else {
System.out.println("Java挂了");
}
}
}
1.3 if…else if语句
if...else if多分枝语句针对某一件事的多种情况进行处理。通常表现为如果满足
某种条件,就进行某种操作,否则如果满足另一种条件则执行另一个操作。
语法如下
if(条件表达式 1){
语句序列1
}
else if(条件表达式 2){
语句序列2
}
else if(条件表达式 2){
语句序列2
}
只执行正确的语句序列,有n个表达式但一定有一个是正确的。
省略规则相同
实例
package study;
import java.io.*;
public class GetTerm {
public static void main(String args[]) {
int x=20;
if(x>30) {
System.out.println("a的值大于30");
}else if(x>10) {
System.out.println("a的值大于10,但小于30");
}else if(x>0) {
System.out.println("a的值大于0,但小于10");
}else {
System.out.println("a的值小于0");
}
}
}
2 switch
当选项比较多时,如果用if语句我们需要列多个语句块。会显得比较冗杂,这时
switch是个不错的选择
语法如下:
switch(表达式)
{
case 常量值 1;
语句块1;
[break;]
...
case 常量值 n;
语句块n;
[break;]
default:
语句块 n+1;
[break;]
}
switch中的表达式的值必须是整型,字符型或者字符串类型,常量1到n需与表达式的类型一致;
如果表达式的值和某个case 后面的常量值相同,则执行该case 后面的若干个语句直到出现break语句;若没有相同则执行default语句后面的语句,如果没有default则不做任何处理。
实例
package study;
import java.io.*;
public class GetSwitch {
public static void main(String args[]) {
int week=2;
switch(week) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
default:
System.out.println("Sorry,I don't Know");
}
}
}
三 循环语句
1 while 语句
while 语句又称为条件判断语句,它的循环方式为利用一个条件来控制是否要继续
反复执行这个语句
语法如下:
while(条件表达式)
{
执行语句
}
当条件表达式的返回值为真时则执行{}中的语句,执行完后重新判断条件表达式的返回值,直到返回值为假时,退出循环
实例
package study;
import java.io.*;
public class GetSum {
public static void main(String args[]){
int x=1;
int sum=0;
while(x<=10) {
sum=sum+x;
x++;
}
System.out.println("sum="+sum);
}
}
2 do…while语句
与while语句不同的是do...while语句先执行一次再进行判断条件表达式,其它与while似;
也就是说do...while语句中执行语句至少被执行了一次
语法如下:
do
{
执行语句
}
while(条件表达式);//(注意do...while语句中括号后面多了个*分号*)
do…while在结尾处多了个分号。
除此之外没有区别。
实例
package study;
import java.io.*;
public class Cycle {
public static void main(String args[]) {
int a=100;
while(a==60)//不满足条件,不执行
{
System.out.println("Ok1");
a--;
}
int b=100;
do {
System.out.println("ok2");
b--;
}while(b==60);//虽然不满足条件,但先执行一次
}
}
3 for语句
for 语句是Java程序设计中最有用的循环语句之一。一个for循环可以重复执行某条
语句,知道条件得到满足
语法如下:
for(表达式1;表达式2;表达式3)
{
语句序列
}
表达式1:初始化表达式,负责完成变量的初始化
表达式2: 循环条件表达式,值为boolean型的表达式,指定循环条件
表达式3: 循环后操作表达式,负责修整变量,改变循环条件
有时可以通过for语句实现无限循环
语法格式为:
for(;;)
{
...
}
对于这样的循环可以通过break语句跳出循环
例如:
for(;;)
{
if(x<20)
break;
x++;
}
实例
package study;
import java.io.*;
public class Circulate {
public static void main(String args[])
{
int sum=0;
for(int i=2;i<=100;i+=2)
{
sum+=i;
}
System.out.println("2到100直接的所以的偶数和为:"+sum);
}
}
4 foreach语句
foreach语句是for语句的简化版本,不能完全取代for语句,同时foreach并不是一个
关键字。习惯上将这种for语句称为foreach语句
语法如下:
for(元素变量x:遍历对象obj)
{
引用了x的Java语句;
}
实例
package study;
import java.io.*;
public class Repetition {
public static void main(String args[])
{
int arr[]= {7,10,1};
System.out.println("一维数组的元素分别为:");//只是输出汉字,这次是分开输出
for(int x:arr) {
System.out.println(x);
}
}
}
四 循环控制
循环控制包括两方面的内容,一方面是控制循环变量的变化方式,另一方面是控制
循环的跳转。
1 break语句
表示跳出当前循环体,从而中断当前循环.(如果多层循环,只跳出最内层的循环,
且只跳出一层)
实例
package study;
import java.io.*;
public class BreakTest {
public static void main(String args[])
{
for(int i=0;i<=100;i++)
{
System.out.println(i);
if(i==6) {
break;
}
}
System.out.println("--end--"); }
}
如果想要跳出外层循环,Java提供标签功能
语法如下:
标签体:循环体{
break 标签体;
}
标签名:任意标识符
循环体:任意循环语句
break标签名:break指定跳出的循环体,此标签体必须和break的标签一致。
带有标签的break语句,可以跳出内层循环也可以跳出外层循环。
实例
package study;
import java.io.*;
public class BreakOutsideNested {
public static void main(String args[])
{
Loop:for(int i=0;i<3;i++)
{
for(int j=0;j<6;j++)
{
if(j==4) {
break Loop;
}
System.out.println("i="+i+" "+"j="+j);
}
}
}
}
2 continue 语句
continue不是立即跳出循环体,而是跳出本次循环结束前面的语句,回到循环的条件
测试部分,重新开始循环(跳过本次循环)
package study;
import java.io.*;
public class ContinueTest {
public static void main(String args[])
{
for(int i=1;i<20;i++)
{
if(i%2==0) {
continue;
}
System.out.println(i);
}
}
}
和break语句一样,continue也具有标签功能
语法如下:
标签体:循环体{
continue 标签体;
}
标签名:任意标识符
循环体:任意循环语句
continue标签名:continue指定跳出的循环体,此标签体必须和break的标签一致。