1.顺序结构
单线程场景下是顺序执行
2.分支结构
(1)if分支结构
if(布尔表达式){
//满足布尔表达式为true时执行的代码块
}
if……else分支
if(布尔表达式){
//满足布尔表达式为true时执行的代码块
}else{
//不满足条件时执行的语句
}
int num=10;
if(num%2==0){
System.out.println(num+"是偶数");
}else{
System.out.println(num+"不是偶数");
}
if(表达式1){
//满足表达式1时执行的语句
}else if(表达式2){
//满足表达式2时执行的语句
}else if(表达式n){
……
}else{
//上述所有条件都不满足时执行的代码
}
int sum=-10;
if(sum<0){
System.out.println(sum+"是负数");
}
else if(sum==0){
System.out.println(sum+"是0");
}
else{
System.out.println(sum+"是正数");
}
if(布尔表达式1){
//满足1时执行的代码
}
if(布尔表达式2){
//满足2时执行的代码
}else{
}
int i=99;
int count=0;
if(i%10==9){
count++;
}
if(i/10==9){
count++;
}
System.out.println(count);
分号问题
int x=1;
if(x==0);{
System.out.println("l");
}
编译器以分号作为分隔依据
//悬垂分割
int j=10;
int k=20;
if(j!=10)
if(k!=20)
System.out.println("a");
else
System.out.println("b");
if-else遵循就近匹配原则
嵌套分支
//判断闰年
int year=1900;
//1.如果能整除100,判断世纪闰年,否则判断普通闰年
if(year%100==0){
if(year%400==0){
System.out.println(year+"是闰年");
}
else{
System.out.println(year+"不是闰年");
}
}
else{
if(year%4==0){
System.out.println(year+"是闰年");
}
else{
System.out.println(year+"不是闰年");
}
}
switch分支:表示多重选择
switch(int/char/String/Enum表达式){
case 常量值1:
语句1;
[break]//可以省略
case 常量值2:
语句2;
[break]//可以省略
case 常量值n:
语句n;
[break]//可以省略
default:{
//上述条件都不满足时执行的语句
}
}
int i=4;
switch (i){
case 1:{
System.out.println("周一");
break;
}
case 2:{
System.out.println("周二");
break;
}
case 3:{
System.out.println("周三");
break;
}
case 4:{
System.out.println("周四");
break;
}
case 5:{
System.out.println("周五");
break;
}
case 6:{
System.out.println("周六");
break;
}
case 7:{
System.out.println("周天");
break;
}
default:{
System.out.println("输入有误");
}
}
swtich语句的几个注意点:
1.switch表达式不支持浮点型
2.switch表达式不支持复杂条件,计算出来的结果必须是一个确定数字,不能表示区间
switch实现的,使用if语句一定可以实现,反之,if可以实现的switch不一定可以
3.循环结构
while分支
while(循环条件){
//循环语句;
}//程序卡死,大概率都是死循环
public static void main(String[] args) {
int a=1;
int num=0;
while(a<=100){
num+=a;
a++;
}
System.out.println(num);
int i=1;
int j=1;
while(i<=5){
j*=i;
i++;
}
System.out.println(j);
//实现1!+2!+……+5!(循环嵌套)
int x=0;
int y=1;
while(y<=5){
int tmp=1;
int rest=1;
while(tmp<=y){
rest*=tmp;
tmp++;
}
x+=rest;
y++;
}
System.out.println(x);
}
break:执行到break语句,跳出当前循环;
continue:执行到continue语句,继续下一次循环,本次循环的剩余代码不再执行;
使用break label可以跳到对应的标签位置;
public static void main(String[] args) {
//100-200第一个3的倍数
int num=100;
while(num<=200){
if(num%3==0){
System.out.println(num);
break;
}
num++;
}
//100-200所有3的倍数
int tmp=100;
while(tmp<=200){
if(tmp%3!=0){
tmp++;
continue;
}
System.out.println(tmp);
tmp++;
}
//break标签
int a=1;
outter:
while(a<=100){
int b=1;
while(b<=100){
if(b%3==0){
System.out.println(b+" ");
break outter;
}
b++;
}
a++;
}
System.out.println("两个循环都执行完了");
}
for循环
for(初始化表达式1;布尔表达式2;表达式3){
循环体代码4;
}
public static void main(String[] args) {
//1.打印1-10的数字
for(int a=1;a<=10;a++){
System.out.println(a);
}
//2.计算1+……100的和
int sum=0;
for(int b=1;b<=100;b++){
sum+=b;
}
System.out.println(sum);
//3.计算1!+2!+……+5!
int k=0;
for(int i=1;i<=5;i++){
int tmp=1;
for(int j=1;j<=i;j++){
tmp*=j;
}
k+=tmp;
}
System.out.println(k);
}
总结:
1.while用于明确知道终止条件,不知道循环次数,也不关心循环次数
2.明确知道循环次数,可以使用for循环