慢慢来慢慢来,虽然快到期末就是了
程序的三种结构
顺序结构
就是执行完一条指令后转到下一条的语句,直到程序的末尾,这个没啥好讲的。
选择结构
if语句
根据条件的成立与否,来决定下一条该执行哪条语句或者执行不执行下一条语句。最常见的就是if语句了。
示例:
int a=1,b=2;
if(a>b){ //判断条件为a是否大于b,满足即执行下一条,不满足即放弃
System.out.println("a大于b");
}
if(a<b){
System.out.println("a小于b");
}
if…else语句
适用于程序中有分支时,如果判断结果为真,就执行A语句,如果为假,即执行B语句。
if(判断条件){ //满足即执行A
语句A;
}else{ //反之 执行B
语句B;
}
注意,单个
if…else
只适合“非黑即白”的条件,不适合那种有多种可能的,比如a>b
,a、b之间不但可以是大于小于,还有可能为等于。这时可以再套娃一个if…else语句来达成效果。
示例:
int x=1,y=2;
if(x>y){ //如果大于
System.out.println("x大于y");
}else{
if(x<y){ //如果小于
System.out.println("x小于y");
}else{ //不大于不小于只能等于了
System.out.println("x等于y");
}
}
switch语句
选择条件很多的时候,除了使用if…else
以外,可以尝试使用更加方便的多重选择语句,也就是switch语句。
其使用方法为:
switch(表达式){
case 选择值1 :语句主体1 ; break;
case 选择值2 : 语句主体2; break;
default : 语句主体;
}
示例:
int x=20,y=5;
char fh='+'; //设置运算符变量“fh”
switch(fh){ //匹配项为“fh”
case '+': //如果为加号,则执行加法
System.out.println("x"+"+"+"y"+"="+(x+y));
break;
case '-': //如果为减号,则执行减法
System.out.println("x"+"-"+"y"+"="+(x-y));
break;
case '*': //如果为乘号,则执行乘法
System.out.println("x"+"*"+"y"+"="+(x*y));
break;
case '/': //如果为除号,则执行除法
System.out.println("x"+"/"+"y"+"="+(x/y));
break;
default: //如果都无法匹配,则输出报错并且自动跳出
System.out.println("错误/未包含的运算符");
}
另外switch语句的一些需要注意的地方:来源
1.switch语句选择的类型只有四种: byte ,short ,int,char
2.case 之间与default没有顺序。先执行第一个case,没有匹配的case就执行default。
3.结束switch语句的两种情况,遇到break、执行到switch语句结束的大括号处。
4.如果匹配的case或者default没有对应的break, 那么程序会继续向下执行,运行可以执行的语句, 直到遇到break或者switch结尾结束。(也就是说记得加上break)
int x=3;
switch(x)
{
case 1: //1.先执行第一个case,未满足
System.out.println("a");
case 2: //2.再执行下一个,未满足
System.out.println("b");
default: //4.执行default
System.out.println("d"); //5.打印输出"d",但由于没有break,swtich语句继续向下执行
case 4: //3.执行下一个,未满足。全部case未满足即执行default
System.out.println("c"); //6.打印输出"c"
}
三目运算符
之前有提到过的一种可以判断和选择结果的运算符,格式如下:
变量 =条件判断?表达式1:表达式2;
大概可以看成(虽然并不准确):
if(条件判断){
变量-->表达式1;
}else{
变量-->表达式2;
}
三目运算符在简易判断中十分简单,只需要三个符号便可以搞定,但因为是一个运算符,所以运算必须有一个结果。具体情况具体分析吧。
示例:
int x=1,y=2;
x=x>y?x-y:x+y; //如果x比y大,则x-y,如果比y小,则x+y
也可以套娃求三个数中的最大值:
int a=102,b=20,c=9,max;
max=(max=a>b?a:b)>c?max:c;
循环结构
根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落就成为循环主体。
循环结构主要有三种,一种是while循环,还有一种是do…while,最后一种是for循环,它们稍有不同。但是,无论是哪种循环语句,都要防止死循环的产生。
while循环
while(循环条件判断){ //先判断,再执行
执行语句1;
执行语句2;
……;
循环条件更改 //对循环条件进行修改,以便跳出循环
}
示例:
int y=0, x = 0;
while (x <= 10) { //x大于等于10时跳出循环
y += x;
x++; //x自增
}
do…while循环
do…while和while其实差不多,但是do…while是先执行一次循环主体再进行循环的判断,也可以想成一个是“有罪再杀”,另一个则是“先斩后奏”。
Do while至少会执行一次循环体
do{
语句1;
语句2;
……;
循环条件改变;
}while(循环条件判断);
示例:
int x=0,y=0;
do{
x +=y; //累加
y++; //自增
}(y<=10);
for循环
上面两种循环操作时不一定需要知道循环的次数,而如果已经明确知道循环次数的话,那么就可以使用for循环。
for(赋值初值;判断条件;赋值增减量){ //三个值中间用分号分开
语句1;
语句2;
……;
}
示例:
int x=0;
for(int y=1;y<=10;y++){
x+=y;
}
break与continue语句
break
break语句可以强迫程序终中断循环,当程序运行到break语句时,即会离开当前所在的循环,继续执行下一个语句。如果break嵌套在循环中的内部循环,则break只会跳出当前层的循环。
示例:
for(int y=0;y<=10;y++){
if(y==5){ //y=5时直接提前跳出循环
break;
}
System.out.println("y="+y); //只能输出到y=4,因为y=5时已经跳出了循环
}
continue
continue
语句可以强迫程序跳到循环的起始处,当程序运行到这玩意时,下面的的代码就不跑了,然后回到循环的起始处继续运行。
示例:
for(int x=0;x<=10;x++){
if(x==5){
continue; //x=5时,回到循环程序开头,跳过System.out的执行,但此时循环程序还会一直执行,直至不满足`x<=10`
}
System.out.println("x="+x); //不会输出x=5
}
小结
- 任何语言都会包括三种功能:顺序、选择、循环
- java中的选择结构有:if、if…else、switch
- 循环:while、do…while、for
- 两种中断关键字:break、continue