流程控制语句
判断语句
if
if(关系表达式){
语句体;
}
例:
public static void main(String[] args) {
int a=1;
int b=2;
if(a==b) {
System.out.println(a=b);
}
if(a!=b) {
System.out.println("a不等于b");
}
}
if……else
if(关系表达式) {
语句体1;
}else {
语句体2;
}
例:
public static void main(String[] args) {
int a=1;
int b=2;
if(a==b) {
System.out.println(a=b);
}
else {
System.out.println("a不等于b");
}
}
if……else……if……else
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
}else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
例:
public static void main(String[] args) {
int a=1;
int b=2;
if(a==b) {
System.out.println(a=b);
}
else if(a>=b) {
System.out.println("a大于等于b");
}
else {
System.out.println("a不等于b,也不大于b");
}
}
注:三元运算符可以和if语句互相翻译
例:
public static void main(String[] args) {
int i=(1==1?100:200);
System.out.println(i);
int j=(1!=1?100:200);
System.out.println(j);
}
//以下代码错误,错误原因,此处不理解,存疑:
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Syntax error on token “else”, delete this token
at Day09.Demo02.main(Demo02.java:103)
// An highlighted block
var foo = 'bar';
public static void main(String[] args) {
int i=100;
int j=200;
if(1==1) {
System.out.println(i);
else{
System.out.println(j);
}
}
}
正确示例:
(PS:输出c记得给c赋初值)
public static void main(String[] args) {
int a=100;
int b=200;
int c = 0;
if(a>b) {
c=a;
}
else if(a<b) {
c=b;
}
System.out.println(c);
//相等
int c1=(a>b?100:200);
}
选择语句
switch……case
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
例:
public static void main(String[] args) {
int weekend =6;//键入数字
switch (weekend) {
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
default:
System.out.println("输入数字有误");
break;
}
}
循环语句
for
for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}
例:
//计算1-100 之间的偶数和
public static void main(String[] args) {
int sum=0;
for(int i=1;i<=100;i++) {
if(i%2==0) {
sum+=i;
}
}
System.out.println(sum);
}
输出结果:2550
while
初始化表达式①
while(布尔表达式②){
循环体③
步进表达式④
}
例:
(PS:试过100内偶数和,然而是错的,此处存疑)
//1-100整数和
public static void main(String[] args) {
int sum=0;
int i=1;
while(i<=100) {
i++;
sum+=i;
}
System.out.println(sum);
}
输出结果:5150
do……while
特点:无条件循环一次
初始化表达式①
do{
循环体③
步进表达式④
}while(布尔表达式②);
例:
public static void main(String[] args) {
int sum=0;
int i=1;
do {
i++;
sum+=i;
}
while(i<=100) ;
System.out.println(sum);
}
输出结果:5150
for 和 while 的小区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。
补充
-
死循环
死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。 -
嵌套循环
嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数。
for(初始化表达式①; 循环条件②; 步进表达式⑦) {
for(初始化表达式③; 循环条件④; 步进表达式⑥) {
执行语句⑤;
}
}
例:
//打印2*3矩形
public static void main(String[] args) {
for(int i=0;i<2;i++) {
for(int j=0;j<3;j++) {
System.out.print("*");
}
System.out.println();
}
}
跳出语句
break
使用场景:终止switch或者循环
例:
public static void main(String[] args) {
for (int i = 1; i<=10; i++) {
//需求:打印完两次HelloWorld之后结束循环
if(i == 3){
break;
}
System.out.println("HelloWorld"+i);
}
}
输出结果:
HelloWorld1
HelloWorld2
continue
使用场景:结束本次循环,继续下一次的循环
例:
public static void main(String[] args) {
for (int i = 1; i<=10; i++) {
//需求:不打印第三次helloWord
if(i == 3){
continue;
}
System.out.println("HelloWorld"+i);
}
}
输出结果:
HelloWorld1
HelloWorld2
HelloWorld4
HelloWorld5
HelloWorld6
HelloWorld7
HelloWorld8
HelloWorld9
HelloWorld10