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穿透。
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字符串判断。
循环的意思就是让程序重复地执行某些语句,whiler循环就是循环结构的一种,当事先不知道循环该执行多少次,就要用到while循环。
循环结构while语句的格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
执行流程:
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。常用的转向控制有break、continue、return、goto(此语句尽量少用,因为这不利结构化程序设计,滥用它会使程序流程无规律、可读性差)等。
break语句:跳出本层的循环;(只跳出包含此语句的循环);
continue语句:继续(一般放到循环语句里,不在执行它下面的语句,直接跳到判断语句);
return语句:返回。
流程控制 break语句、 continue语句; break:终止该层循环; continue:跳过该层循环 注: ①:若这两个语句离开应用范围,存在是没有意义的。 ②:这个两个语句后面都不能有语句,因为执行不到。 ③:continue语句是跳过本次循环,继续下次循环。 ④:标签的出现,可以让这两个语句作用于指定的循环。
小结:
break会强制终止循环并跳出循环体。break语句用于终止最近的循环或它所在的 switch 语句,适用于for循环、switch两种循环语句。
continue并不会强制终止循环,只是忽略了本次循环剩下的语句。continue语句将控制权传递给它所在的封闭迭代语句的下一次迭代(即跳出本循环,执行下一次循环),适用于while、do while、for循环语句。
在同一个类中,可以有一个以上的方法使用相同的方法名称,但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同,这些方法称为方法重载。
方法的重载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)//没有重载 参数一致