Java基础-三元运算符-流程控制

三元运算符

逻辑/关系表达式?表达式1:表达式2;

执行顺序:逻辑/关系表达式结果为true,那么执行表达式1,反之执行表达式2

表达式1和表达式2的运算结果要求类型相同或相容

double d = a > b ? a * 2 : b * 2.5;

a > b ? System.out.println(a):System.out.println(b); //这种方式不允许,因为没有运算结果

注意:三元运算符也是一个运算符,所以运算完成之后一定有运算结果

在使用过程汇总,如果涉及到了三元表达式的嵌套,每个子三元表达式都添加()以方便阅读和维护

int i = 3, j = 4;

System.out.println(i > j ? true : false);  //从语法上而言,没问题

// i > j ? true : false -> i < j

流程控制

顺序结构

指程序从上到下从左到右依次运行

分支结构

判断结构

if(逻辑值){

代码块;

}

执行顺序:当逻辑值为true的时候,执行代码块;反之不执行

 

当if结构的代码块只有一句的时候,{}可以省略不写,但是最好写上

if(逻辑值){

Code 1;

} else {

Code 2;

}

执行顺序:当逻辑值为true的时候,执行代码块1; 反之执行代码块2

 

if(逻辑值1){

Code1;

} else if(逻辑值2){

Code2.;

} else if(逻辑值3){

Code3;

} else {

Code4;

}

执行顺序:先执行逻辑值1,如果逻辑值1为true,执行Code1;反之执行逻辑值2,如果逻辑值2为true,执行Code2,以此类推

练习:输入月份,输出季节。3-5春,6-8夏,9-11秋,12,1,2冬

从控制台输入数据

import java.util.Scanner; //导包语句

Scanner s = new Scanner(System.in);  //输入流

int i = s.nextInt();

double d = s.nextDouble();

String s = s.nextLine();

char c = (char)s.nextInt();

选择结构

switch(表达式){

case 情况1:Code1;break;

case 情况2:Code2;break;

……

default:Code ; break;

}
表达式的运算结果只能是byte/short/int/char

从JDK1.7开始,允许表达式的结果是String

从JDK1.5开始,允许表达式的结果是枚举常量

break关键字表示当前选项的结束,在switch语句中,只有遇到了break语句或者执行switch语句的末尾才会结束

有break的时候,选项之间的顺序没有影响;只要有一个或者一个以上的选项没有break,那么这时候顺序会有影响

break表示当前一层选择语句的结束

int i = 1;

switch(i){

case 1: int j = 0;

case 2: j += 1;

case 3: j += 2;

case 4: j += 3;

default: j+= 4;

}

System.out.println(j); //编译错误,变量没有定义

判断的是一个范围的时候,建议使用if-else-if结构;如果情况相对比较固定的时候,建议使用switch-case语句

循环结构

while(逻辑值){

Code;

}

执行顺序:先判断逻辑值。如果逻辑值为true,执行Code,然后再次判断逻辑值,如果为true,继续循环;如果为false,循环结束

 

循环的三要素:定义循环变量;循环条件的控制;循环变量的改变

while语句中,如果代码块只有一句,{}也可以省略

do{

Code;

} while(逻辑值);

执行顺序:先执行Code,执行逻辑值,如果逻辑值为true,再次执行Code,如果逻辑值为false,结束循环

 

Code至少执行一次

for(循环变量的定义; 循环条件的判断;循环变量的改变){

Code ;

}

 

当循环变量的改变相对比较规律的时候,建议使用for循环

当不知道循环次数的时候,建议使用while循环。

while循环,循环变量定义在循环外,循环结束之后循环变量依然可以使用;for循环的循环变量是定义在for循环里边的,循环结束之后,循环变量不能继续使用

break和continue

break:用于选择或者循环语句中,表示结束当前一层语句

continue:用于循环语句中,表示跳出当前循环继续下次循环

这两个关键字必须结合相应的语句使用,单独存在没有意义,因此单独存在的时候编译报错

System.out.print();--废话,废话不允许存在--编译报错

int i  = 5;

while(true){}

System.out.println(i);--这句话编译报错---因为永远执行不到

循环支持标号形式

当需要一次性跳出多层循环的时候,可以使用标号形式。但是不推荐。降低了程序的阅读性

 

猜你喜欢

转载自blog.csdn.net/weixin_42129856/article/details/81099334