三目(条件)运算符以及分支语句
- 三目运算符
- 分支语句
- if
- if…else
- if…else if
- switch
三目(条件)运算符
1)语法结构
(boolean表达式)?(表达式1):(表达式2)
2)执行流程
先判断boolean表达式的值:
若为true,则整个运算式的值为表达式1的值;
若为false,则整个运算式的值为表达式2的值。
3)代码案例
用三目运算符找出变量a和b中较大的数 ,
int a=10,b=1;
int max=a>b?a:b;//如果a>b为true,说明a大,则把a的值赋给max,若a>b为false,说明b大,把b赋给max
三目运算符的嵌套
找出3个变量a,b,c中的较大值
int a=10,b=5,c=1
int max=a>b?(a>c?a:c):(b>c?b:c);
//先比较a和b的值,再拿a,b中较大的和c比较。可以不加(),这里为了看的清晰,已经用()隔开
分支语句
什么是分支语句,例如 请判断变量a是不是正数,如果是,则输出a是正数,这个时候我们在输出之前要先写一个boolean表达式判断一下,然后输出,不可能是负数它也输出。为了达到这种需求,我们就要用到分支语句。
下面我们看一下java中的分支语句
if
1)语法结构
if(boolean表达式){
代码块;
}
2)执行流程
先判断boolean表达式的值:
若为true,则执行代码块;
若为false,则不执行代码块。
3)代码案例
判断变量a是不是正数,如果大于0,则输出“是正数”:
int a=-10;
if(a>0){
System.out.println("a是正数 ");//因为a=-10 所以a>0为false,所以并没有输出
}
if…else
1)语法结构
if(boolean表达式){
代码块1;
}else{
代码块2;
}
2)执行流程
先判断boolean表达式的值:
若为true,则执行代码块1;
若为false,则执行代码块2。
3)代码案例
判断变量a是不是正数,如果大于0,则输出“是正数”,否则输出“是非正数”:
int a=-10;
if(a>0){
System.out.println("a是正数");
}else{
System.out.println("a是非正数");//因为a=-10 所以a>0为false,所以输出else处的语句块
}
if…else if
1)语法结构
if(boolean表达式1){
代码块1;
}else if(boolean表达式2){
代码块2;
}
....
else{
代码块n;
}
2)执行流程
先判断boolean表达式1的值:
a)若为true,则执行代码块1;
b)若为false,则判断表达式2的值,若为true,则执行代码块2,若为false,则继续判断;
c)如果所有的boolean表达式的值都为false,则执行else中的代码块n.
if …else if中可以由多种情况,但是不论有多少情况,都只会执行其中相对应的一个代码块,一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
3)代码案例
判断变量a是不是正数,如果大于0,则输出“是正数”,否则判断a是否小于0,若是,则输出“是负数”,否则输出 “是零”:
int a=-10;
if(a>0){
System.out.println("a是正数");
}else if(a<0){
System.out.println("a是负数");//因为a=-10 所以a<0为true
}else{
System.out.println("a是零");
}
switch
1)语法结构
switch(变量/表达式){
case 值1:
语句块1;break;
case 值2::
语句块2;break;
...
default:
语句块n;
}
注意:
a)switch括号中的表达式不是boolean表达式,这个表达式有一个固定的值,也可以直接写个变量。
b)这个变量类型或者表达式值的类型可以是能转换成int类型的类型,如: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持枚举类型了,同时 case 标签必须为字符串常量或字面量。
c)switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
d)case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
2)执行流程
a)先确定变量/表达式的值,然后找到case中相对应的值
b)对应的 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
c)如果没有对应的case值,会执行default中的语句块n,default后不需要break。
注意:当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
3)代码案例
int a=5;
switch(a){
case 6:
System.out.println("这是6");break;
case 5:
System.out.println("这是5");
case 4:
System.out.println("这是4");break;
case 4:
System.out.println("这是3");break;
defalut:
System.out.println("这是n");
}
结果如下:
这是5
这是4
注意上例代码中的case 5后语句块并没有break;所以在执行这个语句块后switch语句并没有结束,直到执行完case 4里面的语句块然后碰到break才终止了switch语句。