一、顺序结构
这个最常见,就是按照编写的程序一条一条的去执行。
二、分支结构
1.单分支结构
if( 布尔表达式 ) {
//分支1
}
注:这里的布尔表达式,就是表达式的结果是boolean类型才可以,也就是值为true或false
2.多分支结构
a.单分支结构
if( 布尔表达式 ) {
//分支1
}else{
//分支2
}
esle的就近匹配原则:else总是与最近的if相匹配。我们建议if与else后面带{}。
注:if后面执行一个语句,带括号的是复合语句,可以看作一个语句。单个分号也是一个语句,称为空语句,什么也不做。
b.if..else…多分支结构
if( 布尔表达式1 ) {
//分支1
}else if( 布尔表达式2){
//分支2
}else{
//最后分支
}
c.switch…case语句
switch (i) {
case 变量可能值一: //分支一;
case 变量可能值二://分支二;
case 变量可能值三://分支三;
case 变量可能值四://分支四;
default://默认分支;
}
注意点:
1.i可以是单个变量,可以是表达式,其值类型必须是int、byte、char、short、String、枚举类,case后面变量可能值必须是常量或常量表达式、枚举类实例
2.case后面可以带多个语句,如果case后面没有遇到break;将从当前语句向下继续执行后面所有case的内容。有break将跳出switch语句,最后一个case不加break也会停止。
3.default的位置可以随意放置
4.switch合并
可能需要某两个条件的结果一致,可以使用switch合并,部分代码如下
switch (i) {
case 5:
case 6:System.out.println("5|6");break;
default:System.out.println("default");
}
d.条件表达式
a=i>2"i大于2":"i小于等于2";
注:.条件表达式可以嵌套,但是不要嵌套太深。程序需要可读性和可维护性。我想你看到下面的代码,想骂人的心的都有了。
System.out.print((i>1?numbers[i]>0?"+"+numbers[i]+"x"+i:numbers[i]+"x"+i:i==1?numbers[i]>0?"+"+numbers[i]+"x":numbers[i]+"x":numbers[i]>0?"+"+numbers[i]:numbers[i]));
三、循环结构
1.while
while(布尔表达式){
//代码语句
}
2.do while
do{
//代码语句
}while(布尔表达式);
3.for
for(初始化; 布尔表达式; 步长) {
//代码语句
}
关于 for 循环有以下几点说明:
最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
执行一次循环后,更新循环控制变量。
再次检测布尔表达式。循环执行上面的过程。
4.for-each循环
for-each循环也叫增强for循环
for(声明语句 : 表达式)
{
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组或者容器,或者是返回值为数组或容器的方法。
注:增前for循环的遍历无法修改原数组或容器中的值,并且只能用在数组或者实现iterable接口的集合类上。
死循环:循环条件恒为导致无法退出循环。
四、程序控制语句
1.continue与break的区别
continue:结束本次循环,继续当前循环的下一轮循环
break:跳出当前循环。
2.标号
有时候有多层循环的时候,break/continue只能对当前循环有效,这个时候可以用标号结合break/continue使用。