【JAVA零基础入门系列】(已完结)导航目录
- Day1 开发环境搭建
- Day2 Java集成开发环境IDEA
- Day3 Java基本数据类型
- Day4 变量与常量
- Day5 Java中的运算符
- Day6 Java字符串
- Day7 Java输入与输出
- Day8 Java的控制流程
- Day9 Java中的那个大数值
- Day10 Java中的数组
- Day11 Java中的类和对象
- Day12 Java类的简单应用
- Day13 Java类的继承与多态
- Day14 Java对象的克隆
- Day15 对象的比较
什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等。举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下外面是否下雨,下雨的话就得带伞,否则就直接出门,同时,外面可能有很多家水果店,那去哪家买呢?这里把价格放在第一要素,所以你会一家一家跑,直到找到最便宜的那家为止。
其实,上述买苹果的过程,已经用了两种最常用的控制流程:条件和循环。画个流程图就像这样:
通过这个图,大家应该能很清楚的了解整个决策过程。其实在程序中也是这样运行的,下面再来详细的介绍一下这几个流程控制语句。
1、条件语句if
条件语句用于判断,就像上面的判断是否下雨一样,转换成代码就是:
if (isRaining == true){ //take a umbrella } //go out
跟if一起使用的是else以及else if,用作分支,比如说,分数在90-100分是优秀,80-90分是满意,60-80分是及格,60分以下是不及格,那么转换成代码如下:
if(mark >90 && mark <= 100){ //优秀 }else if(mark >80){ //满意 }else if(mark >60){ //及格 }else{ //不及格 }
上述代码中,使用了if跟else if 以及else的组合。如果mark是70分,则会先在if中判断第一个条件,因为不满足括号内条件,不成立,则流程进入else if,判断第二个条件是否满足,发现第二个条件也不满足,因此进入第三个条件,发现第三个条件满足,因此会执行及格这一部分的代码。
2.循环语句
Java的循环语句主要有这么几个:while,do while,for
while循环很简单,先判断后面的条件是否满足,如果满足则执行后续的代码,一直循环执行,直到条件不成立为止。举个栗子,总分一百分,错一个题扣十分,低于六十分则判定为失败。
while(循环条件){
循环体;
}
int mark = 100; while(mark>60){ mark -= 10; System.out.println(mark); }
这里的"mark-=10"是"mark = mark - 10"的简写形式,这段代码会依次输出90,80,70,60,因为60>60不成立,所以循环结束。
当然,循环中也可以用break跟continue来控制,break直接跳出当前循环,执行循环部分后面的代码,而continue则是直接跳到本轮循环的末尾。举个栗子:
int accout=0; while(true){ accout++; if(accout==5){ break; } if(accout==2){ continue; }
System.out.println("accout:"+accout);
}
这里会依次输出1,3,4,因为account=2时,执行continue会跳过之后的代码,直接跳到下一次循环,而account=5的时候,执行break,跳出循环。这里的while用逻辑值true来控制也是比较常见的用法。
而do while跟while的区别在于,do while是先执行循环体,再判断条件是否成立,就是说,不论如何,循环体至少会被执行一次。两种循环适用的场合不一样。举个栗子。do-while 语句的语法格式为:
do{
循环体;
}while(循环条件);
int i=0; do { System.out.println("我一定会执行一次的"); i++; }while(i<5);
这里会输出五次“我一定会执行一次的”。
再介绍一下最常用的循环,for循环,for 语句的基本结构如下所示:
for(初始化表达式;判断表达式;递增(递减)表达式){
执行语句; //一段代码
}
初始化表达式:初始化表达式的意义,在于定义循环之前变量的值是多少,如果没有这一项,就不知道该从哪个值开始循环。
判断表达式:判断表达式的作用在于规定循环的终点。如果没有判断表达式,那么此循环就成了死循环。
递增(递减)表达式:这一项规定每执行一次程序,变量以多少增量或减量进行变化
for(int i=0;i<5;i++){ System.out.println("i:"+i); }
初始化也可以放在循环之前:
int j=0; for(;j<=6;j=j+2){ System.out.println("j:"+j); }
如果要用for执行死循环的话:
for(;;){ System.out.println("yes"); }
如果既要执行死循环又要用参数进行控制的话:
int n=0; for(;;n=n+10){ System.out.println("n:"+n); }
for循环还有一个很常用的地方就是遍历数组,所谓遍历,就是一个一个访问。
String[] strNum={"张三","李四","王五"}; for(String str:strNum){ System.out.println("name:"+str); }
关于数组的知识会在之后做讲解,这里不需要深究。
如果想要利用for实现多层循环的,可以这么写:
for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ System.out.print(j+" "); } System.out.println("i:"+i); }
具体的代码效果,大家可以放计算机里跑一跑,才能弄明白到底是怎么回事。
Scanner in = new Scanner(System.in); System.out.print("Select a mark(A,B,C,D)"); char mark = in.next(); switch(mark){ case 'A': System.out.println("Wonderful!");
break; case 'B': System.out.println("Great!");
break;
case 'C': System.out.println("Good!");
break;
case 'D': System.out.println("Not Bad!");
break;
default: System.out.println("Error Input!");
break;
}
这里先读取你输入的字母,然后switch语句会将它与case里的条件一一对比,直到找到相符的项,然后执行后面的代码.。如果你输入的是ABCD之外的字母或是其他内容,由于没有项与其匹配,则会执行default部分的代码,输出”Error Input“。这里的每一句case后面都跟了一句break,如果不加break,则会顺序执行,直到遇到break或者全部执行完毕。