有三种情况:


if (条件表达式){
执行表达式
}
if(条件表达式){
执行表达式1
}else{
执行表达式2
}
if(条件表达式1){
执行表达式1
} else if(条件表达式2){
执行表达式2
......
}else{
执行表达式n
}
举例代码如下,三种情况:
class IfTest
{
public static void main(String[] args)
{
// 举例一
int heartbeats = 70;
if (heartbeats<60 || heartbeats >100){
System.out.println("需要进一步检查");
}
System.out.println("检查结束");
//举例2
int age = 20;
if (age < 18){
System.out.println("还未成年");
}else{
System.out.println("成年咯");
}
//举例三
if (age<0){
System.out.println("你还没出生呢");
}
else if (age < 18){
System.out.println("青少年时期");
}else if (age < 35){
System.out.println("青壮年时期");
}else if (age < 60){
System.out.println("中年时期");
}else{
System.out.println("老年时期");
}
}
}
switch语句是基于一个表达式的值决定要执行的一组语句。
switch(表达式){
case c1:
语句组1;
break;
case c2:
语句组2;
break;
.....
case ck:
语句组k;
break;
[default:
语句组;
break;]
}
switch语句是意思是:计算表达式的值,用该值依次和c1,c2,…ck比较,如果符合其中之一ci,那么就执行语句组i,如果没有的话就执行default
class switchTest
{
public static void main(String[] args)
{
int month = 2;
int year = 2000;
int numDays = 0;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
{
numDays = 29;
}
else
numDays = 28;
break;
}
System.out.println("The date is 2002.2. The number of Days =" + numDays);
}
}
我们上面介绍,传统的switch语句存在一些不方便之处,如果一个case分支执行后没有遇到break,会继续执行之后的case分支,直到遇到break。在Java SE 12 和 Java SE 13中,对switch进行扩展
箭头case可以带有一个switch 表达式产生值的语句。“case … ->”分支定义如下:
case label1,label2,....,labeln -> expression;(或者 throw-statement 或 block)
我们可以看到,允许在一个case分支里出现以逗号分隔的多个常量值,程序运行时,这些值任何一个匹配成功,箭头右侧的代码就会被执行,并且在这些代码结束后,将不会允许switch表达式或语句中其他任何分支的代码。
还有一个是用yield someValue 其中someValue 是yield 在case分支产生的switch表达式的值。
Break 和 yield 语句使得switch语句和switch表达式易于区分,yield语句用于switch表达式,而break用于switch语句。传统的冒号case可以使用yield 语句构造switch表达式。例如
int result = switch(s){
case 'FOO':
yield 1;
case 'BAR':
yield 2;
default :
yield 0;
}
while(逻辑表达式){
语句或语句块
}
其中while语句中的表达式必须是逻辑型的。在该语句执行时,首先求表达式的值,如果等于true,则执行while语句块中的语句。直到while表达式的值变为false
do{
语句或语句块
} while(逻辑表达式);
do while 在执行的时候,是先执行循环体中的语句,再求表达式的值,直到表达式的值变为false。do while 是在循坏体的底部求表达式的值,所以,do while 语句至少要把循环体中的语句执行一遍。
for 循坏执行的次数是可以在执行前确定的,for 语句的语法格式是:
for(初始语句; 逻辑表达式 ; 迭代语句){
语句或语句块
}
for 语句执行时先执行初始语句,判断逻辑表达式的值,当逻辑表达式为true时,执行循环体语句,接着执行迭代语句,然后再去判断逻辑表达式的值。这个过程一直走下去,直到逻辑表达式的值为false。
for(i = 0,j = 10;i < j; i++,j--){
...
}
class forTest
{
public static void main(String[] args)
{
int[] array = {32, 87, 3, 589, 12, 1076, 2000};
for (int i = 0;i < array.length ;i++ ){
System.out.print(array[i]+" ");
}
System.out.println();
}
}

Java中可以用break 和 continue 两个循坏跳转语句进一步控制循环。这两个语句的一般格式
break[label];
continue[label];
这两个语句都可以带标签(label)使用,也可以不带标签使用。标签是出现在一个语句之前的标识符,标签后面要跟上一个:
label : statement
不带标签的break就是可以用来终止最内层的循坏体。带了标签的break语句将结束标签所指示的循坏的执行
class breakTest
{
public static void main(String[] args)
{
int[][] array = {{32, 87, 3, 589},{12, 1076, 2000, 8},{622, 127, 77, 955}};
int i = 0;
int j = 0;
int searchfor = 12;
boolean foundIt = false;
search:
for (i = 0;i < array.length ;i++ ){
for (j = 0;j < array[i].length ;j++ ){
if (array[i][j] == searchfor){
foundIt = true;
break search;
}
}
}
if (foundIt){
System.out.println("Found" + searchfor + "at" + i + "," + j);
}
else{
System.out.println("找不到" + searchfor);
}
}
}
在循环中,continue 语句跳过当前循环的其余语句,执行下一次循环,当然执行下一次循环要判定循环条件是否满足,不带标签的continue是跳过最内层的循坏,并开始执行最内层循环的下一次循环