1、条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
2、语句块只有一条执行语句时,一对{}
可以省略,但建议保留
3、if-else语句结构,根据需要可以嵌套使用
4、当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
5、当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
当多个条件是“包含”关系时,“小上大下 / 子上父下”
1、根据switch中表达式中的值,依次匹配各个case的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句,当调用完执行语句完以后,则仍然继续向下执行其他case语句中的执行语句,直到遇到break关键字或者switch-case结构末尾结束为止。
2、break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。
3、switch-case结构中的表达式,只能是如下的六种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)。
4、case之后只能声明常量,不可以声明范围。
5、break关键字在switch结构中是可选的。
6、default类似与if-else中的else,default结构是可选的。
7、如果switch中的多个case的执行语句相同,那么可以考虑合并,例如:
switch(expression){
// 合并value1、value2、value3
case value1:
case value2:
case value3:
//TODO: do something
break;
case value4:
//TODO: do something
}
1、凡是可以使用switch-case的结构,都可以使用if-else
2、当既可以使用switch(表达式取值情况不多时)又可以使用if时,优先选择switch。
在某些条件满足的情况下,反复执行特定代码的功能
初始化部分出了while循环以后仍可以调用
说明:
1、运行的时候会先执行一次循环体部分和迭代部分。
for ( ; ; ){ }
for循环的初始化部分和迭代部分,可以使用,
来分割执行多个语句,要求i、j必须是同一类型
for(int i = 0,j = i + 10;i < 5;i++,j += 2){
System.out.println("i = " + i + ",j = " + j);
}
// i = 0,j = 10
// i = 1,j = 12
// i = 2,j = 14
// i = 3,j = 16
// i = 4,j = 18
while(true){ }
do{ }while(true);
1、循环条件部分返回false
2、在循环体中,执行break
将一个循环放在另一个循环体内,就形成了嵌套循环。
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
外层循环控制行数,内层循环控制列数
衡量功能代码的优劣:
1、保证代码的功能正确性;
2、代码的可读性;
3、健壮性;
4、高效率与低存储(算法的好坏):时间复杂度、空间复杂度
//获取当前开始时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
....
//获取当前结束时间距离1970-01-01 00:00:00的毫秒数
long end= System.currentTimeMillis();
//时间差计算程序运行时间
System.out.println("所花费的时间:" + (end - start));
continue和break的后面不可以声明执行语句。
flag: for(int i = 0;i < 10;i++){
for(int j = 0;j < 100;j++){
if(j > 20){
break flag;
//continue flag;
}
}
}