JAVA学习笔记day04 程序流程控制

时间:2023-02-25 19:09:35

1、switch语句

(1)语法

switch...case提供多路分支,用于选择的数据类型可以可以是整数、Char、枚举类型。

switch(表达式) {

         case 取值1:

                   执行语句;

                   break;

         case 取值2:

                   执行语句;

                   break;

         ......

         default:

                   执行语句;

                   break;

}

 

执行流程:先计算表达式的值,然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句

 

switch语句特点:

1、switch语句选择的类型支持数值。如:byte、short、int、char。

2、case与default之间的执行顺序。先判断所有的case,没有匹配的case执行default。

3、switch语句的停止条件是遇到了break关键字或者switch语句的结束大括号。

4、如果匹配的case或者default没有对应的break,那么程序会继续向下执行语句,直到遇到break或者switch结尾结束。

5、switch case中的值必须要与switch表达式的值具有相同的数据类型。而且case后跟的值必须是常量,不能跟变量。

6、  break最好不要省略,否则会出现:case穿透。

2、if和switch语句比较

if 和switch 语句很像,具体什么场景下,应用哪个语句呢?

(1)如果判断的具体数值不多,而是符号byte、short、int、char四种类型,虽然2个语句都可以使用,建议使用switch语句,因为效率稍高。

(2)对区间或范围的判断,使用if。if的使用范围更广,除了能判断具体数值还能判断区间。switch 判断区间会很费劲的,要写好多case。

         例如:根据学生考试成绩划分ABCD,A90-100、B80-89、C70-79、D60-69、E0-59。

(3)对结果为boolean类型的判断,使用if。switch 是不能实现的。

 

最后,在JDK5中对switch增加了对枚举的判断,JDK7中增加对switch字符串判断。

3.循环语句while

循环的意思就是让程序重复地执行某些语句,whiler循环就是循环结构的一种,当事先不知道循环该执行多少次,就要用到while循环。

循环结构while语句的格式:     

初始化语句;

             while(判断条件语句) {

                            循环体语句;

                            控制条件语句;

                   }

执行流程:

  a:执行初始化语句

  b:执行判断条件语句,看其返回值是true还是false

如果是true,就继续执行

如果是false,就结束循环

  c:执行循环体语句;

  d:执行控制条件语句

 e:回到b继续。

4.控制语句

控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。常用的转向控制有break、continuereturn、goto(此语句尽量少用,因为这不利结构化程序设计,滥用它会使程序流程无规律、可读性差)等。

break语句:跳出本层的循环;(只跳出包含此语句的循环);

 

continue语句:继续(一般放到循环语句里,不在执行它下面的语句,直接跳到判断语句);

return语句:返回。


流程控制

break语句、 	continue语句;

break:终止该层循环;
continue:跳过该层循环
注:
①:若这两个语句离开应用范围,存在是没有意义的。
②:这个两个语句后面都不能有语句,因为执行不到。
③:continue语句是跳过本次循环,继续下次循环。
④:标签的出现,可以让这两个语句作用于指定的循环。
 
 

小结:

break会强制终止循环并跳出循环体。break语句用于终止最近的循环或它所在的 switch 语句,适用于for循环、switch两种循环语句。

continue并不会强制终止循环,只是忽略了本次循环剩下的语句。continue语句将控制权传递给它所在的封闭迭代语句的下一次迭代(即跳出本循环,执行下一次循环),适用于whiledo whilefor循环语句。



5.函数的重载  

在同一个类中,可以有一个以上的方法使用相同的方法名称,但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同,这些方法称为方法重载。

方法的重载overload是指一个类中可以定义有相同的名字,但是参数列表不同,调用时,会根据不同的参数列表选择对应的方法。
所以只和参数列表有关系。
规则:两同三不同
  --同一个类,同一个方法名
  --不同:参数列表不同(类型、个数、顺序不同)
  --只有返回值不同不能构成方法的重载
  --只有形参的名称不同,不能构成方法的重载
什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同,那么,这时就定义一个函数名称表示该功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
练习。。 一下哪些函数是重载的哪些不是?

void show(int a ,char b,double c){}
1. void show(int x, char y, double z){}//没有重载  与原函数一样
2.int show(int a, double c,char b){}//重载了   参数列表不同
3.void show (int a, double c,char b){}//重载了  参数列表不同 同上 
4.boolean show (int c, char b)//重载了   参数列表不同
5.void show(double c)//重载了  参数个数不同
6.double show(intx, char y,double z)//没有重载 参数一致