文章目录
- 条件判断语句
- if...else语句
- 三元运算符
- switch语句
- 循环执行语句
- while语句
- for语句
- 转向语句
- break语句
- continue语句
- 嵌套
条件判断语句
条件判断语句如果为真,就执行花括号内的语句,相当于人类语言中的“如果…那么…”
if…else语句
使用if、else、else if等保留字,如果需要执行的语句就只有一个,就可以不加花括号。
int i = 1;
if(i > 0) {
i++;
System.out.print(i);
}
这里先判断i是不是大于0,大于0把i加1,再打印i。
if语句还可以和else语句组合
int i = 1;
if(i > 0) {
i++;
System.out.print(i);
}
else i -= 9;
如果i不大于0,就把i减9。
如果需要判断的条件大于2个,还可以加上else if语句。
int i = 1;
if(i > 0) {
i++;
System.out.print(i);
}
else if(i == 0) i -= 9;
else{
i << 1;
System.out.print(i);
}
这里先判断i是不是大于0,再判断i是不是等于0,最后如果以上都不满足,就执行else语句后面的内容。
if语句内如果使用return语句,必须在花括号外再加一个return语句,否则无法编译。
int i = 1;
if(i > 0) {
i++;
return i;
}
return i;
三元运算符
如果是只有两种情况的if语句可以用三元运算符替代。格式是条件 ? 语句1 : 语句2
,条件成立执行语句1,否则执行语句2。
int a = 1;
a > 0 ? ++a : --a;
如果a大于0,就把a加1,否则把a减1。
switch语句
在判断条件很多的情况下,比如需要实现状态机的时候,可以使用switch语句替代if语句。
switch(a){
case 1:
case 2:
x+=10;
break;
case 3:
x+=16;
break;
default:
x +=34;
}
a是需要用于判断的变量,case后面 跟判断条件,问号后面跟语句,default相当于else。
只有到break,switch语句才会停止执行,如果case 2没有break,即使a == 2,还会执行case 3。所以,一般不用switch语句。如果使用switch语句,编译时在类名前加-Xlint:fallthrough
,比如javac -Xlint:fallthrough Test.java
循环执行语句
如果不满足设置的条件,那么就会一直执行花括号内的语句。
while语句
格式是while(条件) 执行语句
int a = 0;
while(a < 100){
a++;
System.out.print(a);
}
如果a小于100,就一直执行a++;
和System.out.print(a);
。当a等于100时,就跳出while语句,执行后面的语句。
如果需要至少执行一次循环内的语句,那么就需要用do
保留字。
int a = 0;
do{
a++;
System.out.print(a);
}
while(a < 0);
尽管a不满足条件,但a还是加1并被打印出来。
如果条件设置为true,那么就是一个无限循环,会一直执行到程序崩溃。
int a = 0;
while(true){
a++;
System.out.print(a);
}
for语句
for语句和while语句不同之处在于,for语句还需要一个“计数器”,即一个用来计数的变量,一般格式是“for(计数器;终止条件;计数器运算)”
int a = 2;
for(int i=0; i<100; i++){
a *= a;
}
这里计数器是i,如果i小于100,就让a乘以自己,其实就是2的100次方运算。
计数器也可以在循环外定义
int a = 2;
int i=0;
for(; i<100; i++){
a *= a;
}
也可以定义多个计数器
int a = 2;
for(int i=0, j=100; i < j; i++, j--){
a *= a;
}
转向语句
转向语句可以在满足循环条件的情况下终止或跳出某次循环,goto
还是Java的保留字,但已经不再使用。
break语句
break语句可以直接终止循环控制语句。
int a = 0;
while(true){
a++;
System.out.print(a);
break;
}
虽然设置的条件是无限循环,但执行到break语句就会直接终止while循环。
除了单独使用外,break语句还可以和条件判断语句一起使用。
int a = 0;
while(true){
a++;
System.out.print(a);
if(a == 10)break;
}
当a等于10时,跳出循环。
continue语句
continue语句只会打断这一次的循环,然后执行下一次循环。
int a = 2;
for(int i=0; i<100; i++){
if(i / 4 == 0 ) continue;
a *= a;
}
如果i是4的倍数,那么不执行a *= a
。
嵌套
以上的这些控制语句都可以相互嵌套
比如for语句内还可以再嵌套一个for语句。
for(int i=1; i<10; i++) {
for(int j=i; j<10; j++) {
System.out.println(i+"*"+j+":"+i*j);
}
}
这里在i=1时,执行第二个for循环,执行完后再执行i=2时的循环,依此类推。
不同语句也可以相互嵌套。
int a= 0;
if(a == 0){
while(a < 100) a++;
}
如果a为0,就执行while语句。
在嵌套语循环句的时候,有时使用continue和break语句,需要跳到外面的循环语句,这时我们就可以在continue和break后面加上标签,我们就把这种break和continue语句称为带标签的break和continue语句
out: for (int i=101; i<150; i++) {
for(int j=2; j<i/2; j++) {
if (i%j == 0) continue out;
}
System.out.println(i + " ");
}
out是标签,先加在要跳回的步骤前面,再加在continue或break后面,再本例中,如果发现有整除的情况,就直接跳回for循环,而不会去执行打印。